worarounds of problem with communication with PV controller

pull/2/head
Mateusz Lubecki 2021-03-23 08:01:33 +01:00
rodzic f84a46da5c
commit 8c14c40e3e
3 zmienionych plików z 13 dodań i 22 usunięć

Wyświetl plik

@ -16,7 +16,7 @@
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="130018508298" id="ilg.gnuarmeclipse.managedbuild.cross.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings Cross ARM" parameter="${COMMAND} ${FLAGS} ${cross_toolchain_flags} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="840221283438" id="ilg.gnuarmeclipse.managedbuild.cross.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings Cross ARM" parameter="${COMMAND} ${FLAGS} ${cross_toolchain_flags} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>

Wyświetl plik

@ -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) {

Wyświetl plik

@ -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';
}
}
}