fixed aime LED firmware

This commit is contained in:
Dniel97 2024-03-17 14:19:56 +01:00
parent 774a639bb7
commit 47a65e5e51
Signed by untrusted user: Dniel97
GPG Key ID: 6180B3C768FB2E08
3 changed files with 28 additions and 21 deletions

View File

@ -25,6 +25,13 @@ struct sg_res_header {
uint8_t payload_len; uint8_t payload_len;
}; };
/* struct to save the version string with its length
to fix NUL terminator issues */
struct version_info {
const char *version;
uint8_t length;
};
typedef HRESULT (*sg_dispatch_fn_t)( typedef HRESULT (*sg_dispatch_fn_t)(
void *ctx, void *ctx,
const void *req, const void *req,

View File

@ -27,11 +27,11 @@ static HRESULT sg_led_cmd_set_color(
const struct sg_led *led, const struct sg_led *led,
const struct sg_led_req_set_color *req); const struct sg_led_req_set_color *req);
const char *sg_led_info[] = { static const struct version_info led_version[] = {
"15084\xFF\x10\x00\x12", {"15084\xFF\x10\x00\x12", 9},
"000-00000\xFF\x11\x40", {"000-00000\xFF\x11\x40", 12},
// maybe the same? // maybe the same?
"000-00000\xFF\x11\x40" {"000-00000\xFF\x11\x40", 12}
}; };
void sg_led_init( void sg_led_init(
@ -156,10 +156,10 @@ static HRESULT sg_led_cmd_get_info(
{ {
sg_led_dprintf(led, "Get info\n"); sg_led_dprintf(led, "Get info\n");
unsigned int len = strlen(sg_led_info[led->gen - 1]); const struct version_info *fw = &led_version[led->gen - 1];
sg_res_init(&res->res, req, len); sg_res_init(&res->res, req, fw->length);
memcpy(res->payload, sg_led_info[led->gen - 1], len); memcpy(res->payload, fw->version, fw->length);
return S_OK; return S_OK;
} }

View File

@ -65,16 +65,16 @@ static HRESULT sg_nfc_cmd_dummy(
const struct sg_req_header *req, const struct sg_req_header *req,
struct sg_res_header *res); struct sg_res_header *res);
static const char *hw_version[] = { static const struct version_info hw_version[] = {
"TN32MSEC003S H/W Ver3.0", {"TN32MSEC003S H/W Ver3.0", 23},
"837-15286", {"837-15286", 9},
"837-15396" {"837-15396", 9}
}; };
static const char *fw_version[] = { static const struct version_info fw_version[] = {
"TN32MSEC003S F/W Ver1.2", {"TN32MSEC003S F/W Ver1.2", 23},
"\x94", {"\x94", 1},
"\x94" {"\x94", 1}
}; };
void sg_nfc_init( void sg_nfc_init(
@ -217,11 +217,11 @@ static HRESULT sg_nfc_cmd_get_fw_version(
const struct sg_req_header *req, const struct sg_req_header *req,
struct sg_nfc_res_get_fw_version *res) struct sg_nfc_res_get_fw_version *res)
{ {
unsigned int len = strlen(fw_version[nfc->gen - 1]); const struct version_info *fw = &fw_version[nfc->gen - 1];
/* Dest version is not NUL terminated, this is intentional */ /* Dest version is not NUL terminated, this is intentional */
sg_res_init(&res->res, req, len); sg_res_init(&res->res, req, fw->length);
memcpy(res->version, fw_version[nfc->gen - 1], len); memcpy(res->version, fw->version, fw->length);
return S_OK; return S_OK;
} }
@ -231,11 +231,11 @@ static HRESULT sg_nfc_cmd_get_hw_version(
const struct sg_req_header *req, const struct sg_req_header *req,
struct sg_nfc_res_get_hw_version *res) struct sg_nfc_res_get_hw_version *res)
{ {
unsigned int len = strlen(hw_version[nfc->gen - 1]); const struct version_info *hw = &hw_version[nfc->gen - 1];
/* Dest version is not NUL terminated, this is intentional */ /* Dest version is not NUL terminated, this is intentional */
sg_res_init(&res->res, req, len); sg_res_init(&res->res, req, hw->length);
memcpy(res->version, hw_version[nfc->gen - 1], len); memcpy(res->version, hw->version, hw->length);
return S_OK; return S_OK;
} }