int Lighting_Output_Encode_Lighting_Command( uint8_t * apdu, BACNET_LIGHTING_COMMAND * data) { int apdu_len = 0; /* total length of the apdu, return value */ int len = 0; /* total length of the apdu, return value */ float real_value = 0.0; uint32_t unsigned_value = 0; if (apdu) { len = encode_context_enumerated(&apdu[apdu_len], 0, data->operation); apdu_len += len; /* optional level? */ if (data->level != 255) { real_value = data->level; len = encode_context_real(&apdu[apdu_len], 1, real_value); apdu_len += len; } /* optional ramp-rate */ if (data->ramp_rate != 255) { real_value = data->ramp_rate; len = encode_context_real(&apdu[apdu_len], 2, real_value); apdu_len += len; } /* optional step increment */ if (data->step_increment != 255) { real_value = data->step_increment; len = encode_context_real(&apdu[apdu_len], 3, real_value); apdu_len += len; } /* optional fade time */ if (data->fade_time != 0) { real_value = data->fade_time; len = encode_context_real(&apdu[apdu_len], 4, real_value); apdu_len += len; } /* optional duration */ if (data->duration != 0) { unsigned_value = data->duration; len = encode_context_unsigned(&apdu[apdu_len], 5, unsigned_value); apdu_len += len; } } return apdu_len; }
/** * Encodes into bytes from the lighting-command structure * * @param apdu - buffer to hold the bytes * @param value - lighting command value to encode * * @return number of bytes encoded, or 0 if unable to encode. */ int lighting_command_encode( uint8_t * apdu, BACNET_LIGHTING_COMMAND * data) { int apdu_len = 0; /* total length of the apdu, return value */ int len = 0; /* total length of the apdu, return value */ if (apdu) { len = encode_context_enumerated(&apdu[apdu_len], 0, data->operation); apdu_len += len; /* optional target-level */ if (data->use_target_level) { len = encode_context_real(&apdu[apdu_len], 1, data->target_level); apdu_len += len; } /* optional ramp-rate */ if (data->use_ramp_rate) { len = encode_context_real(&apdu[apdu_len], 2, data->ramp_rate); apdu_len += len; } /* optional step increment */ if (data->use_step_increment) { len = encode_context_real(&apdu[apdu_len], 3, data->step_increment); apdu_len += len; } /* optional fade time */ if (data->use_fade_time) { len = encode_context_unsigned(&apdu[apdu_len], 4, data->fade_time); apdu_len += len; } /* optional priority */ if (data->use_priority) { len = encode_context_unsigned(&apdu[apdu_len], 5, data->priority); apdu_len += len; } } return apdu_len; }