24 #ifndef VIVICORESERIAL_DATACODE_H
25 #define VIVICORESERIAL_DATACODE_H
45 #define NUM_DECODED_BUFF (NUM_MAX_UART_PKT_BODY_DATA * 2)
46 #define NUM_DATA_PKT_STRUCT_LEN (NUM_DECODED_BUFF > NUM_MAX_UART_PKT ? NUM_DECODED_BUFF : NUM_MAX_UART_PKT)
49 uint8_t data[NUM_DATA_PKT_STRUCT_LEN];
118 return !(_is_dc_num_in_max && _is_dc_info_in_packet_length && _is_dc_minmax_valid && !_has_truncated_data &&
119 (_has_binary ? (_dc_num == 1) :
true));
130 return !_is_known_dc_type;
140 bool init(
const dcInfo_t *dc_info,
const uint8_t dc_num);
156 bool encode(
const int16_t *encoding_values, data_pkt *out);
177 bool encode(
const int16_t *encoding_values,
const bool *is_set, data_pkt *out,
const bool is_initial_data =
false);
198 bool decode(
const data_pkt *in, int16_t *values, uint8_t *dc_nums, uint8_t *dc_nums_count);
207 bool _is_dc_num_in_max =
false;
208 bool _is_dc_minmax_valid =
false;
209 bool _is_dc_info_in_packet_length =
false;
210 bool _is_known_dc_type =
false;
211 bool _has_truncated_data =
false;
212 bool _has_binary =
false;
213 uint8_t _max_data_body_length = 0;
216 uint8_t getDataBodyLength(
void);
217 Range_t getDataRange(
const DcType_t dc_type);
219 inline size_t getDataSize(
const DcType_t dc_type) {
220 if (dc_type == DcType_t::DC_TYPE_ANALOG_2BYTES) {
222 }
else if ((dc_type == DcType_t::DC_TYPE_ANALOG_1BYTE) || (dc_type == DcType_t::DC_TYPE_BOOLEAN) ||
223 (dc_type == DcType_t::DC_TYPE_BINARY)) {
Communication protocol definitions for VIVIWARE Cell Branch and Custom.
#define NUM_MAX_DC
Maximum number of DC info in a Branch.
Definition: CommunicationProtocol.h:265
This class is to encode and decode DCDT format data which is used between VIVIWARE Cell App,...
Definition: VivicoreSerialDataCode.h:57
bool hasBinary(void)
Definition: VivicoreSerialDataCode.h:102
bool init(const dcInfo_t *dc_info, const uint8_t dc_num)
Definition: VivicoreSerialDataCode.cpp:34
bool hasFatalError(void)
Definition: VivicoreSerialDataCode.h:129
uint8_t getDcNum(void)
Definition: VivicoreSerialDataCode.h:84
bool hasError(void)
Definition: VivicoreSerialDataCode.h:117
bool decode(const data_pkt *in, int16_t *values, uint8_t *dc_nums, uint8_t *dc_nums_count)
Definition: VivicoreSerialDataCode.cpp:218
const dcInfo_t * getDcInfo(void)
Definition: VivicoreSerialDataCode.h:93
bool encode(const int16_t *encoding_values, data_pkt *out)
Definition: VivicoreSerialDataCode.cpp:104
DataCodeTranslator(void)
Definition: VivicoreSerialDataCode.h:62
DC information structure for each input or output of Branch.
Definition: VivicoreSerialDataCode.h:35
DcNature_t data_nature
Definition: VivicoreSerialDataCode.h:37
int16_t data_min
Definition: VivicoreSerialDataCode.h:39
int16_t data_max
Definition: VivicoreSerialDataCode.h:40
DcType_t data_type
Definition: VivicoreSerialDataCode.h:38
DcGroup_t group_no
Definition: VivicoreSerialDataCode.h:36
int16_t data_ini
Definition: VivicoreSerialDataCode.h:41