void TemperatureObject_Create(AwaStaticClient * awaClient) { // Define Temperature objects AwaStaticClient_DefineObject(awaClient, IPSO_TEMPERATURE_OBJECT, "Temperature", 0, TEMPERATURE_INSTANCES); AwaStaticClient_DefineResource(awaClient, IPSO_TEMPERATURE_OBJECT, IPSO_SENSOR_VALUE, "Value", AwaResourceType_Float, 0, 1, AwaResourceOperations_ReadOnly); AwaStaticClient_SetResourceStorageWithPointer(awaClient, IPSO_TEMPERATURE_OBJECT, IPSO_SENSOR_VALUE, &temperatureObject[0].Value, sizeof(temperatureObject[0].Value), sizeof(temperatureObject[0])); AwaStaticClient_DefineResource(awaClient, IPSO_TEMPERATURE_OBJECT, IPSO_UNITS, "Units", AwaResourceType_String, 0, 1, AwaResourceOperations_ReadOnly); AwaStaticClient_SetResourceStorageWithPointer(awaClient, IPSO_TEMPERATURE_OBJECT, IPSO_UNITS, &temperatureObject[0].Units, sizeof(temperatureObject[0].Units), sizeof(temperatureObject[0])); AwaStaticClient_DefineResource(awaClient, IPSO_TEMPERATURE_OBJECT, IPSO_MIN_MEASURED_VALUE, "Min", AwaResourceType_Float, 0, 1, AwaResourceOperations_ReadOnly); AwaStaticClient_SetResourceStorageWithPointer(awaClient, IPSO_TEMPERATURE_OBJECT, IPSO_MIN_MEASURED_VALUE, &temperatureObject[0].Min, sizeof(temperatureObject[0].Min), sizeof(temperatureObject[0])); AwaStaticClient_DefineResource(awaClient, IPSO_TEMPERATURE_OBJECT, IPSO_MAX_MEASURED_VALUE, "Max", AwaResourceType_Float, 0, 1, AwaResourceOperations_ReadOnly); AwaStaticClient_SetResourceStorageWithPointer(awaClient, IPSO_TEMPERATURE_OBJECT, IPSO_MAX_MEASURED_VALUE, &temperatureObject[0].Max, sizeof(temperatureObject[0].Max), sizeof(temperatureObject[0])); // Create object instances memset(&temperatureObject, 0, sizeof(temperatureObject)); memset(&temperatureInput, 0, sizeof(temperatureInput)); int instance; for (instance = 0; instance < TEMPERATURE_INSTANCES; instance++) { AwaStaticClient_CreateObjectInstance(awaClient, IPSO_TEMPERATURE_OBJECT, instance); AwaStaticClient_CreateResource(awaClient, IPSO_TEMPERATURE_OBJECT, instance, IPSO_SENSOR_VALUE); AwaStaticClient_CreateResource(awaClient, IPSO_TEMPERATURE_OBJECT, instance, IPSO_UNITS); AwaStaticClient_CreateResource(awaClient, IPSO_TEMPERATURE_OBJECT, instance, IPSO_MIN_MEASURED_VALUE); AwaStaticClient_CreateResource(awaClient, IPSO_TEMPERATURE_OBJECT, instance, IPSO_MAX_MEASURED_VALUE); strncpy(temperatureObject[instance].Units, TEMPERATURE_UNITS_CELSIUS, TEMPERATURE_UNITS_SIZE); } }
AwaError BarometerObject_DefineObjectsAndResources(AwaStaticClient *awaClient, AwaFloat minRange, AwaFloat maxRange) { BarometerStorage.MaxRangeValue = maxRange; BarometerStorage.MinRangeValue = minRange; AwaError error; error = AwaStaticClient_DefineObject(awaClient, IPSO_BAROMETER_OBJECT, "Barometer", 0, 1); if (error != AwaError_Success) { printf("Failed to register Barometer IPSO object\n"); return error; } error = AwaStaticClient_DefineResource(awaClient, IPSO_BAROMETER_OBJECT, IPSO_BAROMETER_SENSOR_VALUE, "Sensor Value", AwaResourceType_Float, 1, 1, AwaResourceOperations_ReadOnly); AwaStaticClient_SetResourceStorageWithPointer(awaClient, IPSO_BAROMETER_OBJECT, IPSO_BAROMETER_SENSOR_VALUE, &BarometerStorage.Value, sizeof(BarometerStorage.Value), 0); if (error != AwaError_Success) { printf("Failed to define 'Sensor Value' resource\n"); return error; } error = AwaStaticClient_DefineResource(awaClient, IPSO_BAROMETER_OBJECT, IPSO_BAROMETER_UNITS, "Units", AwaResourceType_String, 0, 1, AwaResourceOperations_ReadOnly); AwaStaticClient_SetResourceStorageWithPointer(awaClient, IPSO_BAROMETER_OBJECT, IPSO_BAROMETER_UNITS, BarometerStorage.Units, strlen(BarometerStorage.Units), 0); if (error != AwaError_Success) { printf("Failed to define 'Units' resource\n"); return error; } error = AwaStaticClient_DefineResource(awaClient, IPSO_BAROMETER_OBJECT, IPSO_BAROMETER_MIN_MEASURED_VALUE, "Min Measured Value", AwaResourceType_Float, 0, 1, AwaResourceOperations_ReadOnly); AwaStaticClient_SetResourceStorageWithPointer(awaClient, IPSO_BAROMETER_OBJECT, IPSO_BAROMETER_MIN_MEASURED_VALUE, &BarometerStorage.MinMeasuredValue, sizeof(BarometerStorage.MinMeasuredValue), 0); if (error != AwaError_Success) { printf("Failed to define 'Min Measured Value' resource\n"); return error; } error = AwaStaticClient_DefineResource(awaClient, IPSO_BAROMETER_OBJECT, IPSO_BAROMETER_MAX_MEASURED_VALUE, "Max Measured Value", AwaResourceType_Float, 0, 1, AwaResourceOperations_ReadOnly); AwaStaticClient_SetResourceStorageWithPointer(awaClient, IPSO_BAROMETER_OBJECT, IPSO_BAROMETER_MAX_MEASURED_VALUE, &BarometerStorage.MaxMeasuredValue, sizeof(BarometerStorage.MaxMeasuredValue), 0); if (error != AwaError_Success) { printf("Failed to define 'Max Measured Value' resource\n"); return error; } error = AwaStaticClient_DefineResource(awaClient, IPSO_BAROMETER_OBJECT, IPSO_BAROMETER_MIN_RANGE_VALUE, "Min Range Value", AwaResourceType_Float, 0, 1, AwaResourceOperations_ReadOnly); AwaStaticClient_SetResourceStorageWithPointer(awaClient, IPSO_BAROMETER_OBJECT, IPSO_BAROMETER_MIN_RANGE_VALUE, &BarometerStorage.MinRangeValue, sizeof(BarometerStorage.MinRangeValue), 0); if (error != AwaError_Success) { printf("Failed to define 'Min Range Value' resource\n"); return error; } error = AwaStaticClient_DefineResource(awaClient, IPSO_BAROMETER_OBJECT, IPSO_BAROMETER_MAX_RANGE_VALUE, "Max Range Value", AwaResourceType_Float, 0, 1, AwaResourceOperations_ReadOnly); AwaStaticClient_SetResourceStorageWithPointer(awaClient, IPSO_BAROMETER_OBJECT, IPSO_BAROMETER_MAX_RANGE_VALUE, &BarometerStorage.MaxRangeValue, sizeof(BarometerStorage.MaxRangeValue), 0); if (error != AwaError_Success) { printf("Failed to define 'Max Range Value' resource\n"); return error; } error = AwaStaticClient_DefineResource(awaClient, IPSO_BAROMETER_OBJECT, IPSO_BAROMETER_RESET_MIN_AND_MAX_MEASURED_VALUES, "Reset Min and Max Measured Values", AwaResourceType_Opaque, 0, 1, AwaResourceOperations_Execute); AwaStaticClient_SetResourceOperationHandler(awaClient, IPSO_BAROMETER_OBJECT, IPSO_BAROMETER_RESET_MIN_AND_MAX_MEASURED_VALUES, BarometerObject_Handler); if (error != AwaError_Success) { printf("Failed to define 'Reset Min and Max Measured Values' resource\n"); return error; } int instance = 0; error = AwaStaticClient_CreateObjectInstance(awaClient, IPSO_BAROMETER_OBJECT, instance); if (error != AwaError_Success) { // if the object instance already exists, // the object already contains a maximum number of object instances, // or if no object is defined for the specified object ID. printf("Failed to CreateObjectInstance\n"); return error; } //Since it's mandatory resource, you don't need to create it explicit. Awa will handle this for you //error = AwaStaticClient_CreateResource(awaClient, IPSO_BAROMETER_OBJECT, instance, IPSO_BAROMETER_SENSOR_VALUE); error = AwaStaticClient_CreateResource(awaClient, IPSO_BAROMETER_OBJECT, instance, IPSO_BAROMETER_UNITS); if (error != AwaError_Success) { printf("Failed to create resource 'Units'\n"); return error; } error = AwaStaticClient_CreateResource(awaClient, IPSO_BAROMETER_OBJECT, instance, IPSO_BAROMETER_MAX_RANGE_VALUE); if (error != AwaError_Success) { printf("Failed to create resource 'Max Range Value'\n"); return error; } error = AwaStaticClient_CreateResource(awaClient, IPSO_BAROMETER_OBJECT, instance, IPSO_BAROMETER_MIN_RANGE_VALUE); if (error != AwaError_Success) { printf("Failed to create resource 'Min Range Value'\n"); return error; } error = AwaStaticClient_CreateResource(awaClient, IPSO_BAROMETER_OBJECT, instance, IPSO_BAROMETER_MIN_MEASURED_VALUE); if (error != AwaError_Success) { printf("Failed to create resource 'Min Measured Value'\n"); return error; } error = AwaStaticClient_CreateResource(awaClient, IPSO_BAROMETER_OBJECT, instance, IPSO_BAROMETER_MAX_MEASURED_VALUE); if (error != AwaError_Success) { printf("Failed to create resource 'Max Measured Value'\n"); return error; } error = AwaStaticClient_CreateResource(awaClient, IPSO_BAROMETER_OBJECT, instance, IPSO_BAROMETER_RESET_MIN_AND_MAX_MEASURED_VALUES); if (error != AwaError_Success) { printf("Failed to create resource 'Reset Min and Max Measured Values'\n"); return error; } return AwaError_Success; }