kopia lustrzana https://github.com/SP8EBC/ParaTNC
worarounds of problem with communication with PV controller
rodzic
f84a46da5c
commit
8c14c40e3e
|
@ -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 "${INPUTS}"" 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 "${INPUTS}"" prefer-non-shared="true">
|
||||
<language-scope id="org.eclipse.cdt.core.gcc"/>
|
||||
<language-scope id="org.eclipse.cdt.core.g++"/>
|
||||
</provider>
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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';
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue