summaryrefslogtreecommitdiff
path: root/src/slave-cmd.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/slave-cmd.c')
-rw-r--r--src/slave-cmd.c27
1 files changed, 18 insertions, 9 deletions
diff --git a/src/slave-cmd.c b/src/slave-cmd.c
index 5a7153e..c8425fb 100644
--- a/src/slave-cmd.c
+++ b/src/slave-cmd.c
@@ -160,7 +160,7 @@ int main(void)
else if (SOR_buf[0] == 2) {
uint8_t CTS_buf[] = {0x0, 0x1};
uint8_t len_buf[4], *MDR_buf, *data_buf;
- /* _datapoint datapoints[16]; */
+ _datapoint datapoints[16];
HAL_I2C_Slave_Transmit(&hi2c1, CTS_buf, 2, 10000);
sprintf((char*)debug_buf, "Sent CTS\r\n");
@@ -181,18 +181,27 @@ int main(void)
HAL_I2C_Slave_Transmit(&hi2c1, CTS_buf, 2, 10000);
HAL_I2C_Slave_Receive(&hi2c1, MDR_buf, MDR_len, 10000);
HAL_I2C_Slave_Receive(&hi2c1, data_buf, data_len, 10000);
-
- _datapoint datapoint_message;
+
s2m_MDR_response MDR_message;
+ s2m_data data_message;
+ data_idx = 0;
+ data_message.datapoints.funcs.decode = decode_data_callback;
+ data_message.datapoints.arg = (void*)datapoints;
+
pb_istream_t MDR_istream = pb_istream_from_buffer(MDR_buf, MDR_len);
- pb_istream_t data_istream = pb_istream_from_buffer(data_buf, data_len);
+ pb_istream_t data_istream = pb_istream_from_buffer(data_buf, data_len);
pb_decode(&MDR_istream, s2m_MDR_response_fields, &MDR_message);
- pb_decode(&data_istream, _datapoint_fields, &datapoint_message);
-
- sprintf((char*)debug_buf, "Got data from %ld, running version %f\r\n\tdata 0: %f\r\n", MDR_message.module_id, MDR_message.MDR_version, datapoint_message.data);
- HAL_UART_Transmit(&huart1, debug_buf, sizeof(debug_buf), 100);
- memset(debug_buf, 0, 128);
+ if (!pb_decode(&data_istream, s2m_data_fields, &data_message)){
+ sprintf((char*)debug_buf, "Data decode error\r\n");
+ HAL_UART_Transmit(&huart1, debug_buf, sizeof(debug_buf), 100);
+ memset(debug_buf, 0, 128);
+ }
+ else {
+ sprintf((char*)debug_buf, "Got data from %ld\r\n\tEntity: %ld, data : %f, unit: %ld\r\n", MDR_message.module_id, datapoints[0].entity_id, datapoints[0].data, datapoints[0].unit_id);
+ HAL_UART_Transmit(&huart1, debug_buf, sizeof(debug_buf), 100);
+ memset(debug_buf, 0, 128);
+ }
}
else if (SOR_buf[0] == 3) {
uint8_t CTS_buf[] = {0x0, 0x1}, len_buf[4], *cmd_buf;