int air_quality_get_all_values(AirQuality *air_quality, int32_t *ret_iaq_index, uint8_t *ret_iaq_index_accuracy, int32_t *ret_temperature, int32_t *ret_humidity, int32_t *ret_air_pressure) {
	DevicePrivate *device_p = air_quality->p;
	GetAllValues_Request request;
	GetAllValues_Response response;
	int ret;

	ret = packet_header_create(&request.header, sizeof(request), AIR_QUALITY_FUNCTION_GET_ALL_VALUES, device_p->ipcon_p, device_p);

	if (ret < 0) {
		return ret;
	}

	ret = device_send_request(device_p, (Packet *)&request, (Packet *)&response);

	if (ret < 0) {
		return ret;
	}

	*ret_iaq_index = leconvert_int32_from(response.iaq_index);
	*ret_iaq_index_accuracy = response.iaq_index_accuracy;
	*ret_temperature = leconvert_int32_from(response.temperature);
	*ret_humidity = leconvert_int32_from(response.humidity);
	*ret_air_pressure = leconvert_int32_from(response.air_pressure);

	return ret;
}
Ejemplo n.º 2
0
int gps_get_altitude(GPS *gps, int32_t *ret_altitude, int32_t *ret_geoidal_separation) {
	DevicePrivate *device_p = gps->p;
	GetAltitude_ request;
	GetAltitudeResponse_ response;
	int ret;

	ret = packet_header_create(&request.header, sizeof(request), GPS_FUNCTION_GET_ALTITUDE, device_p->ipcon_p, device_p);

	if (ret < 0) {
		return ret;
	}


	ret = device_send_request(device_p, (Packet *)&request, (Packet *)&response);

	if (ret < 0) {
		return ret;
	}
	*ret_altitude = leconvert_int32_from(response.altitude);
	*ret_geoidal_separation = leconvert_int32_from(response.geoidal_separation);



	return ret;
}
int air_quality_get_air_pressure_callback_configuration(AirQuality *air_quality, uint32_t *ret_period, bool *ret_value_has_to_change, char *ret_option, int32_t *ret_min, int32_t *ret_max) {
	DevicePrivate *device_p = air_quality->p;
	GetAirPressureCallbackConfiguration_Request request;
	GetAirPressureCallbackConfiguration_Response response;
	int ret;

	ret = packet_header_create(&request.header, sizeof(request), AIR_QUALITY_FUNCTION_GET_AIR_PRESSURE_CALLBACK_CONFIGURATION, device_p->ipcon_p, device_p);

	if (ret < 0) {
		return ret;
	}

	ret = device_send_request(device_p, (Packet *)&request, (Packet *)&response);

	if (ret < 0) {
		return ret;
	}

	*ret_period = leconvert_uint32_from(response.period);
	*ret_value_has_to_change = response.value_has_to_change != 0;
	*ret_option = response.option;
	*ret_min = leconvert_int32_from(response.min);
	*ret_max = leconvert_int32_from(response.max);

	return ret;
}
Ejemplo n.º 4
0
static void gps_callback_wrapper_altitude(DevicePrivate *device_p, Packet *packet) {
	AltitudeCallbackFunction callback_function;
	void *user_data = device_p->registered_callback_user_data[GPS_CALLBACK_ALTITUDE];
	AltitudeCallback_ *callback = (AltitudeCallback_ *)packet;
	*(void **)(&callback_function) = device_p->registered_callbacks[GPS_CALLBACK_ALTITUDE];

	if (callback_function == NULL) {
		return;
	}

	callback->altitude = leconvert_int32_from(callback->altitude);
	callback->geoidal_separation = leconvert_int32_from(callback->geoidal_separation);

	callback_function(callback->altitude, callback->geoidal_separation, user_data);
}
static void air_quality_callback_wrapper_all_values(DevicePrivate *device_p, Packet *packet) {
	AllValues_CallbackFunction callback_function;
	void *user_data = device_p->registered_callback_user_data[DEVICE_NUM_FUNCTION_IDS + AIR_QUALITY_CALLBACK_ALL_VALUES];
	AllValues_Callback *callback = (AllValues_Callback *)packet;

	*(void **)(&callback_function) = device_p->registered_callbacks[DEVICE_NUM_FUNCTION_IDS + AIR_QUALITY_CALLBACK_ALL_VALUES];

	if (callback_function == NULL) {
		return;
	}

	callback->iaq_index = leconvert_int32_from(callback->iaq_index);
	callback->temperature = leconvert_int32_from(callback->temperature);
	callback->humidity = leconvert_int32_from(callback->humidity);
	callback->air_pressure = leconvert_int32_from(callback->air_pressure);

	callback_function(callback->iaq_index, callback->iaq_index_accuracy, callback->temperature, callback->humidity, callback->air_pressure, user_data);
}
static void air_quality_callback_wrapper_air_pressure(DevicePrivate *device_p, Packet *packet) {
	AirPressure_CallbackFunction callback_function;
	void *user_data = device_p->registered_callback_user_data[DEVICE_NUM_FUNCTION_IDS + AIR_QUALITY_CALLBACK_AIR_PRESSURE];
	AirPressure_Callback *callback = (AirPressure_Callback *)packet;

	*(void **)(&callback_function) = device_p->registered_callbacks[DEVICE_NUM_FUNCTION_IDS + AIR_QUALITY_CALLBACK_AIR_PRESSURE];

	if (callback_function == NULL) {
		return;
	}

	callback->air_pressure = leconvert_int32_from(callback->air_pressure);

	callback_function(callback->air_pressure, user_data);
}
static void air_quality_callback_wrapper_humidity(DevicePrivate *device_p, Packet *packet) {
	Humidity_CallbackFunction callback_function;
	void *user_data = device_p->registered_callback_user_data[DEVICE_NUM_FUNCTION_IDS + AIR_QUALITY_CALLBACK_HUMIDITY];
	Humidity_Callback *callback = (Humidity_Callback *)packet;

	*(void **)(&callback_function) = device_p->registered_callbacks[DEVICE_NUM_FUNCTION_IDS + AIR_QUALITY_CALLBACK_HUMIDITY];

	if (callback_function == NULL) {
		return;
	}

	callback->humidity = leconvert_int32_from(callback->humidity);

	callback_function(callback->humidity, user_data);
}
static void air_quality_callback_wrapper_iaq_index(DevicePrivate *device_p, Packet *packet) {
	IAQIndex_CallbackFunction callback_function;
	void *user_data = device_p->registered_callback_user_data[DEVICE_NUM_FUNCTION_IDS + AIR_QUALITY_CALLBACK_IAQ_INDEX];
	IAQIndex_Callback *callback = (IAQIndex_Callback *)packet;

	*(void **)(&callback_function) = device_p->registered_callbacks[DEVICE_NUM_FUNCTION_IDS + AIR_QUALITY_CALLBACK_IAQ_INDEX];

	if (callback_function == NULL) {
		return;
	}

	callback->iaq_index = leconvert_int32_from(callback->iaq_index);

	callback_function(callback->iaq_index, callback->iaq_index_accuracy, user_data);
}
Ejemplo n.º 9
0
int load_cell_get_weight_callback_threshold(LoadCell *load_cell, char *ret_option, int32_t *ret_min, int32_t *ret_max) {
	DevicePrivate *device_p = load_cell->p;
	GetWeightCallbackThreshold_Request request;
	GetWeightCallbackThreshold_Response response;
	int ret;

	ret = packet_header_create(&request.header, sizeof(request), LOAD_CELL_FUNCTION_GET_WEIGHT_CALLBACK_THRESHOLD, device_p->ipcon_p, device_p);

	if (ret < 0) {
		return ret;
	}

	ret = device_send_request(device_p, (Packet *)&request, (Packet *)&response);

	if (ret < 0) {
		return ret;
	}

	*ret_option = response.option;
	*ret_min = leconvert_int32_from(response.min);
	*ret_max = leconvert_int32_from(response.max);

	return ret;
}
Ejemplo n.º 10
0
static void load_cell_callback_wrapper_weight_reached(DevicePrivate *device_p, Packet *packet) {
	WeightReached_CallbackFunction callback_function;
	void *user_data = device_p->registered_callback_user_data[DEVICE_NUM_FUNCTION_IDS + LOAD_CELL_CALLBACK_WEIGHT_REACHED];
	WeightReached_Callback *callback = (WeightReached_Callback *)packet;

	*(void **)(&callback_function) = device_p->registered_callbacks[DEVICE_NUM_FUNCTION_IDS + LOAD_CELL_CALLBACK_WEIGHT_REACHED];

	if (callback_function == NULL) {
		return;
	}

	callback->weight = leconvert_int32_from(callback->weight);

	callback_function(callback->weight, user_data);
}
int air_quality_get_air_pressure(AirQuality *air_quality, int32_t *ret_air_pressure) {
	DevicePrivate *device_p = air_quality->p;
	GetAirPressure_Request request;
	GetAirPressure_Response response;
	int ret;

	ret = packet_header_create(&request.header, sizeof(request), AIR_QUALITY_FUNCTION_GET_AIR_PRESSURE, device_p->ipcon_p, device_p);

	if (ret < 0) {
		return ret;
	}

	ret = device_send_request(device_p, (Packet *)&request, (Packet *)&response);

	if (ret < 0) {
		return ret;
	}

	*ret_air_pressure = leconvert_int32_from(response.air_pressure);

	return ret;
}
int air_quality_get_humidity(AirQuality *air_quality, int32_t *ret_humidity) {
	DevicePrivate *device_p = air_quality->p;
	GetHumidity_Request request;
	GetHumidity_Response response;
	int ret;

	ret = packet_header_create(&request.header, sizeof(request), AIR_QUALITY_FUNCTION_GET_HUMIDITY, device_p->ipcon_p, device_p);

	if (ret < 0) {
		return ret;
	}

	ret = device_send_request(device_p, (Packet *)&request, (Packet *)&response);

	if (ret < 0) {
		return ret;
	}

	*ret_humidity = leconvert_int32_from(response.humidity);

	return ret;
}
int air_quality_get_temperature_offset(AirQuality *air_quality, int32_t *ret_offset) {
	DevicePrivate *device_p = air_quality->p;
	GetTemperatureOffset_Request request;
	GetTemperatureOffset_Response response;
	int ret;

	ret = packet_header_create(&request.header, sizeof(request), AIR_QUALITY_FUNCTION_GET_TEMPERATURE_OFFSET, device_p->ipcon_p, device_p);

	if (ret < 0) {
		return ret;
	}

	ret = device_send_request(device_p, (Packet *)&request, (Packet *)&response);

	if (ret < 0) {
		return ret;
	}

	*ret_offset = leconvert_int32_from(response.offset);

	return ret;
}
Ejemplo n.º 14
0
int load_cell_get_weight(LoadCell *load_cell, int32_t *ret_weight) {
	DevicePrivate *device_p = load_cell->p;
	GetWeight_Request request;
	GetWeight_Response response;
	int ret;

	ret = packet_header_create(&request.header, sizeof(request), LOAD_CELL_FUNCTION_GET_WEIGHT, device_p->ipcon_p, device_p);

	if (ret < 0) {
		return ret;
	}

	ret = device_send_request(device_p, (Packet *)&request, (Packet *)&response);

	if (ret < 0) {
		return ret;
	}

	*ret_weight = leconvert_int32_from(response.weight);

	return ret;
}
int air_quality_get_iaq_index(AirQuality *air_quality, int32_t *ret_iaq_index, uint8_t *ret_iaq_index_accuracy) {
	DevicePrivate *device_p = air_quality->p;
	GetIAQIndex_Request request;
	GetIAQIndex_Response response;
	int ret;

	ret = packet_header_create(&request.header, sizeof(request), AIR_QUALITY_FUNCTION_GET_IAQ_INDEX, device_p->ipcon_p, device_p);

	if (ret < 0) {
		return ret;
	}

	ret = device_send_request(device_p, (Packet *)&request, (Packet *)&response);

	if (ret < 0) {
		return ret;
	}

	*ret_iaq_index = leconvert_int32_from(response.iaq_index);
	*ret_iaq_index_accuracy = response.iaq_index_accuracy;

	return ret;
}