diff --git a/.settings/language.settings.xml b/.settings/language.settings.xml
index 7b454e1..073aca8 100644
--- a/.settings/language.settings.xml
+++ b/.settings/language.settings.xml
@@ -16,7 +16,7 @@
-
+
diff --git a/src/main.c b/src/main.c
index b82ac6d..7b1ba8e 100644
--- a/src/main.c
+++ b/src/main.c
@@ -560,10 +560,10 @@ int main(int argc, char* argv[]){
// enabling timeout handling for serial port. This is required because VE protocol frame may vary in lenght
// and serial port driver could finish reception only either on stop character or when declared number of bytes
// has been received.
- srl_switch_timeout(main_kiss_srl_ctx_ptr, 1, 100);
+ srl_switch_timeout(main_kiss_srl_ctx_ptr, 1, 50);
// switching UART to receive mode to be ready for data from charging controller
- srl_receive_data(main_kiss_srl_ctx_ptr, VE_DIRECT_MAX_FRAME_LN, 0x0D, 0, 0, 0, 0);
+ srl_receive_data(main_kiss_srl_ctx_ptr, VE_DIRECT_MAX_FRAME_LN, 0, 0, 0, 0, 0);
}
else {
// switching UART to receive mode to be ready for KISS frames from host
@@ -690,7 +690,9 @@ int main(int argc, char* argv[]){
rte_pv_corrupted_messages_count++;
}
- srl_receive_data(main_kiss_srl_ctx_ptr, VE_DIRECT_MAX_FRAME_LN, 0x0D, 0, 0, 0, 0);
+ //memset(srl_get_rx_buffer(main_kiss_srl_ctx_ptr), 0x00, TX_BUFFER_1_LN);
+
+ srl_receive_data(main_kiss_srl_ctx_ptr, VE_DIRECT_MAX_FRAME_LN, 0, 0, 0, 0, 0);
}
}
else if (config_data_mode.wx_umb == 1) {
diff --git a/system/src/ve_direct_protocol/parser.c b/system/src/ve_direct_protocol/parser.c
index d30bca4..62bf0d9 100644
--- a/system/src/ve_direct_protocol/parser.c
+++ b/system/src/ve_direct_protocol/parser.c
@@ -155,10 +155,6 @@ void ve_direct_cut_to_checksum(uint8_t* input, uint16_t input_ln,
*target_ln = checksum_start + CHECKSUM_NAME_FIELD_LN_TO_DATA;
- for (i = checksum_start + CHECKSUM_NAME_FIELD_LN_TO_DATA; i < input_ln; i++) {
- *(input + i) = 0x00;
- }
-
}
void ve_direct_validate_checksum(uint8_t* input, uint16_t input_ln, uint8_t* valid) {
@@ -171,20 +167,6 @@ void ve_direct_validate_checksum(uint8_t* input, uint16_t input_ln, uint8_t* val
return;
}
- // rewind to first printable chcaracter
- while (is_non_printable_character()) {
- i++;
-
- // if we reach an end of the string but no printable character has been spotted
- if (i >= input_ln) {
- *valid = 0;
- return;
- }
- }
-
- // checksum need to be calculated including newline before first record
- i -= 2;
-
for (; i < input_ln; i++) {
// workaround of the problem with loosing \n or \r characters
@@ -214,6 +196,13 @@ void ve_direct_validate_checksum(uint8_t* input, uint16_t input_ln, uint8_t* val
}
}
+ else {
+
+ // the next part of the stupid workaround
+ if ((*input) == '\n') {
+ sum += '\r';
+ }
+ }
}