#ifndef __8SEG_PROTOCOL_H__
#define __8SEG_PROTOCOL_H__

enum packet_type {
    PKT_TYPE_RESERVED = 0,
    PKT_TYPE_SET_OUTPUTS_BINARY = 1,
    PKT_TYPE_SET_GLOBAL_BRIGHTNESS = 2,
    PKT_TYPE_SET_OUTPUTS = 3,
    PKT_TYPE_GET_STATUS = 4,
    PKT_TYPE_MAX
};

struct status_tx {
    int16_t temp_tenths_C;
    uint32_t uptime_s;
    uint32_t decoding_error_cnt, protocol_error_cnt;
    int16_t vcc_mv, vin_mv, vskew_mv;
    uint16_t jitter_meas_avg_ns;
};

extern void set_outputs(uint8_t val[8]);
extern void set_outputs_binary(int mask, int global_brightness);

void protocol_init(void);

#endif /* __8SEG_PROTOCOL_H__ */