kiss communication. did: bugfix in lengh of response, get_version: bugfix in overwriting first byte of a response

master
Mateusz Lubecki 2023-11-12 11:09:11 +01:00
rodzic ee541a54dc
commit b642c3c540
5 zmienionych plików z 28 dodań i 19 usunięć

Wyświetl plik

@ -5,7 +5,7 @@
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/> <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.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" 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="842559031985696342" 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="871033396245946614" 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.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/> <language-scope id="org.eclipse.cdt.core.g++"/>
</provider> </provider>
@ -16,7 +16,7 @@
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/> <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.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" 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="813754081161391399" 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="854345066964168583" 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.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/> <language-scope id="org.eclipse.cdt.core.g++"/>
</provider> </provider>

Wyświetl plik

@ -8,6 +8,7 @@ C_SRCS += \
../src/PathConfig.c \ ../src/PathConfig.c \
../src/TimerConfig.c \ ../src/TimerConfig.c \
../src/_write.c \ ../src/_write.c \
../src/backup_registers.c \
../src/button_paratnc.c \ ../src/button_paratnc.c \
../src/delay.c \ ../src/delay.c \
../src/dummy.c \ ../src/dummy.c \
@ -21,6 +22,7 @@ C_SRCS += \
../src/rte_rtu.c \ ../src/rte_rtu.c \
../src/rte_wx.c \ ../src/rte_wx.c \
../src/software_version.c \ ../src/software_version.c \
../src/variant_parameteo.c \
../src/wx_handler.c \ ../src/wx_handler.c \
../src/wx_handler_humidity.c \ ../src/wx_handler_humidity.c \
../src/wx_handler_pressure.c \ ../src/wx_handler_pressure.c \
@ -32,6 +34,7 @@ OBJS += \
./src/PathConfig.o \ ./src/PathConfig.o \
./src/TimerConfig.o \ ./src/TimerConfig.o \
./src/_write.o \ ./src/_write.o \
./src/backup_registers.o \
./src/button_paratnc.o \ ./src/button_paratnc.o \
./src/delay.o \ ./src/delay.o \
./src/dummy.o \ ./src/dummy.o \
@ -45,6 +48,7 @@ OBJS += \
./src/rte_rtu.o \ ./src/rte_rtu.o \
./src/rte_wx.o \ ./src/rte_wx.o \
./src/software_version.o \ ./src/software_version.o \
./src/variant_parameteo.o \
./src/wx_handler.o \ ./src/wx_handler.o \
./src/wx_handler_humidity.o \ ./src/wx_handler_humidity.o \
./src/wx_handler_pressure.o \ ./src/wx_handler_pressure.o \
@ -56,6 +60,7 @@ C_DEPS += \
./src/PathConfig.d \ ./src/PathConfig.d \
./src/TimerConfig.d \ ./src/TimerConfig.d \
./src/_write.d \ ./src/_write.d \
./src/backup_registers.d \
./src/button_paratnc.d \ ./src/button_paratnc.d \
./src/delay.d \ ./src/delay.d \
./src/dummy.d \ ./src/dummy.d \
@ -69,6 +74,7 @@ C_DEPS += \
./src/rte_rtu.d \ ./src/rte_rtu.d \
./src/rte_wx.d \ ./src/rte_wx.d \
./src/software_version.d \ ./src/software_version.d \
./src/variant_parameteo.d \
./src/wx_handler.d \ ./src/wx_handler.d \
./src/wx_handler_humidity.d \ ./src/wx_handler_humidity.d \
./src/wx_handler_pressure.d \ ./src/wx_handler_pressure.d \

Wyświetl plik

@ -8,8 +8,8 @@
#ifndef SOFTWARE_VERSION_H_ #ifndef SOFTWARE_VERSION_H_
#define SOFTWARE_VERSION_H_ #define SOFTWARE_VERSION_H_
#define SW_VER "EB02" #define SW_VER "EB03"
#define SW_DATE "31102023" #define SW_DATE "12112023"
#define SW_KISS_PROTO "B" #define SW_KISS_PROTO "B"
extern const char software_version_str[5]; extern const char software_version_str[5];

Wyświetl plik

@ -124,9 +124,9 @@ int32_t kiss_callback_get_version_id(uint8_t* input_frame_from_host, uint16_t in
uint8_t config_payload_size = 0; uint8_t config_payload_size = 0;
#ifdef PARAMETEO #ifdef PARAMETEO
config_payload_size = snprintf((char *)response_buffer + 3, buffer_size, "METEO-%s-%s", SW_VER, SW_KISS_PROTO); config_payload_size = snprintf((char *)response_buffer + 4, buffer_size, "METEO-%s-%s", SW_VER, SW_KISS_PROTO);
#else #else
config_payload_size = snprintf((char *)response_buffer + 3, buffer_size, "TNC-%s-%s", SW_VER, SW_KISS_PROTO); config_payload_size = snprintf((char *)response_buffer + 4, buffer_size, "TNC-%s-%s", SW_VER, SW_KISS_PROTO);
#endif #endif
// construct a response // construct a response
@ -229,6 +229,8 @@ int32_t kiss_callback_read_did(uint8_t* input_frame_from_host, uint16_t input_le
int32_t out = 0; int32_t out = 0;
memset(response_buffer, 0x00, buffer_size);
// identifier // identifier
uint16_t did = *(input_frame_from_host + 2) | (*(input_frame_from_host + 3) << 8); uint16_t did = *(input_frame_from_host + 2) | (*(input_frame_from_host + 3) << 8);

Wyświetl plik

@ -242,7 +242,7 @@ static int kiss_did_validate(kiss_did_numeric_definition_t * definition, uint8_t
*/ */
uint8_t kiss_did_response(uint16_t identifier, uint8_t * output_buffer, uint16_t buffer_ln) { uint8_t kiss_did_response(uint16_t identifier, uint8_t * output_buffer, uint16_t buffer_ln) {
uint8_t out = 0xFF; uint8_t out = 0;
// iterator to go through DID definition // iterator to go through DID definition
int i = 0; int i = 0;
@ -325,12 +325,19 @@ uint8_t kiss_did_response(uint16_t identifier, uint8_t * output_buffer, uint16_t
// move after DID value and size_byte // move after DID value and size_byte
output_buffer += 3; output_buffer += 3;
// room for size byte
out++;
// and for DID value itself
out += 2;
//append first data source //append first data source
memcpy(output_buffer, found.first_data, found.first_data_size); memcpy(output_buffer, found.first_data, found.first_data_size);
//move forward a poiner to response buffer //move forward a poiner to response buffer
output_buffer += found.first_data_size; output_buffer += found.first_data_size;
// room for first value returned by DID
out += found.first_data_size; out += found.first_data_size;
if (number_of_data_source > 1) { if (number_of_data_source > 1) {
@ -353,12 +360,6 @@ uint8_t kiss_did_response(uint16_t identifier, uint8_t * output_buffer, uint16_t
out += found.third_data_size; out += found.third_data_size;
} }
// also include size_byte in this calculation
out++;
// include DID value itself
out += 2;
} }
else if (found.identifier != 0xFFFFu && is_valid == 1 && is_float == 1) { else if (found.identifier != 0xFFFFu && is_valid == 1 && is_float == 1) {
@ -376,6 +377,12 @@ uint8_t kiss_did_response(uint16_t identifier, uint8_t * output_buffer, uint16_t
// move after DID value and size_byte // move after DID value and size_byte
output_buffer += 3; output_buffer += 3;
// room for size byte stored in output buffer
out++;
// room for DID number in output buffer
out += 2;
//append first data source //append first data source
memcpy(output_buffer, found.first_data, sizeof(float)); memcpy(output_buffer, found.first_data, sizeof(float));
@ -404,12 +411,6 @@ uint8_t kiss_did_response(uint16_t identifier, uint8_t * output_buffer, uint16_t
out += sizeof(float); out += sizeof(float);
} }
// also include size_byte in this calculation
out++;
// include DID value itself
out += 2;
} }
else if (found.identifier != 0xFFFFu && is_string == 1) { else if (found.identifier != 0xFFFFu && is_string == 1) {