Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
/**
 * 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;
}