forked from Dniel97/segatools
fixed aime LED firmware
This commit is contained in:
parent
774a639bb7
commit
47a65e5e51
@ -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,
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user