feat: automate FT1 factory test status reporting
This commit is contained in:
@@ -31,6 +31,35 @@ void handle_nfc_bind(const char *uid) { (void)uid; }
|
||||
void handle_nfc_trigger(const char *uid) { (void)uid; }
|
||||
|
||||
static char g_ip_address[64];
|
||||
static volatile int g_led_mode;
|
||||
static ql_task_t g_led_task;
|
||||
|
||||
static void factory_led_task(void *arg)
|
||||
{
|
||||
int phase = 0;
|
||||
(void)arg;
|
||||
ql_gpio_init(FT_STATUS_LED_PIN, PIN_DIRECTION_OUT, PIN_PULL_DISABLE,
|
||||
PIN_LEVEL_HIGH);
|
||||
while (1) {
|
||||
if (g_led_mode == 0) {
|
||||
ql_gpio_set_level(FT_STATUS_LED_PIN, PIN_LEVEL_LOW);
|
||||
ql_rtos_task_sleep_ms(100);
|
||||
} else if (g_led_mode == 1) {
|
||||
ql_gpio_set_level(FT_STATUS_LED_PIN, PIN_LEVEL_HIGH);
|
||||
ql_rtos_task_sleep_ms(100);
|
||||
} else {
|
||||
phase = !phase;
|
||||
ql_gpio_set_level(FT_STATUS_LED_PIN,
|
||||
phase ? PIN_LEVEL_HIGH : PIN_LEVEL_LOW);
|
||||
ql_rtos_task_sleep_ms(g_led_mode == 2 ? 250 : 100);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void factory_led_mode(int mode)
|
||||
{
|
||||
g_led_mode = mode;
|
||||
}
|
||||
|
||||
static int iccid_valid(const char *iccid)
|
||||
{
|
||||
@@ -87,7 +116,16 @@ static ft_error_t run_power_adc(char *data, unsigned int data_size)
|
||||
static ft_error_t run_audio_loopback(char *data, unsigned int data_size)
|
||||
{
|
||||
u32 recorded_ms = 0;
|
||||
int ret = factory_audio_wait_and_loopback(FT_DIALOG_KEY_TIMEOUT_MS, &recorded_ms);
|
||||
int ret = factory_audio_play_prompt(FT_AUDIO_LOOPBACK_PATH);
|
||||
if (ret == -2) {
|
||||
return FT_ERR_AUDIO_FILE_MISSING;
|
||||
}
|
||||
if (ret != 0) {
|
||||
return FT_ERR_AUDIO_PLAY;
|
||||
}
|
||||
factory_led_mode(2);
|
||||
ret = factory_audio_wait_and_loopback(FT_DIALOG_KEY_TIMEOUT_MS, &recorded_ms);
|
||||
factory_led_mode(1);
|
||||
snprintf(data, data_size,
|
||||
"{\"recorded_ms\":%lu,\"max_ms\":%d,\"volume_percent\":100}",
|
||||
(unsigned long)recorded_ms, FT_AUDIO_MAX_MS);
|
||||
@@ -163,12 +201,22 @@ static ft_error_t run_nfc(char *data, unsigned int data_size)
|
||||
u8 ntag_data[180] = {0};
|
||||
u16 ntag_len = 0;
|
||||
u8 version;
|
||||
int audio_ret;
|
||||
u32 start = ft_now_ms();
|
||||
|
||||
audio_ret = factory_audio_play_prompt(FT_AUDIO_NFC_PATH);
|
||||
if (audio_ret == -2) {
|
||||
return FT_ERR_AUDIO_FILE_MISSING;
|
||||
}
|
||||
if (audio_ret != 0) {
|
||||
return FT_ERR_AUDIO_PLAY;
|
||||
}
|
||||
factory_led_mode(3);
|
||||
DP1312EA_Reset();
|
||||
version = DP1312EA_ReadRawRC(VersionReg);
|
||||
if (version != FT_NFC_VERSION_EXPECTED) {
|
||||
snprintf(data, data_size, "{\"chip_version\":\"0x%02X\"}", version);
|
||||
factory_led_mode(1);
|
||||
return FT_ERR_NFC_CHIP;
|
||||
}
|
||||
|
||||
@@ -179,11 +227,13 @@ static ft_error_t run_nfc(char *data, unsigned int data_size)
|
||||
snprintf(data, data_size,
|
||||
"{\"chip_version\":\"0x%02X\",\"uid\":\"%s\"}",
|
||||
version, (char *)output_uuid);
|
||||
factory_led_mode(1);
|
||||
return FT_OK;
|
||||
}
|
||||
ql_rtos_task_sleep_ms(200);
|
||||
} while (ft_now_ms() - start < FT_NFC_TIMEOUT_MS);
|
||||
|
||||
factory_led_mode(1);
|
||||
return FT_ERR_NFC_TIMEOUT;
|
||||
}
|
||||
|
||||
@@ -213,10 +263,13 @@ static void factory_test_task(void *arg)
|
||||
|
||||
ql_rtos_task_sleep_s(2);
|
||||
ft_protocol_init();
|
||||
ql_rtos_task_create(&g_led_task, 2048, 15, "ft_led", factory_led_task, NULL);
|
||||
factory_led_mode(1);
|
||||
if (ql_dev_get_imei(imei, sizeof(imei)) == 0) {
|
||||
ft_protocol_set_imei(imei);
|
||||
}
|
||||
ft_protocol_session_start();
|
||||
ft_protocol_start_status_broadcast();
|
||||
|
||||
for (node = FT_NODE_BOOT_AUDIO; node < FT_NODE_COUNT; ++node) {
|
||||
ft_protocol_node_start(node);
|
||||
@@ -230,11 +283,7 @@ static void factory_test_task(void *arg)
|
||||
}
|
||||
}
|
||||
|
||||
audio_ret = factory_audio_play_prompt(FT_AUDIO_PASS_PATH);
|
||||
if (audio_ret == 0) {
|
||||
ql_rtos_task_sleep_ms(300);
|
||||
audio_ret = factory_audio_play_prompt(FT_AUDIO_SHUTDOWN_PATH);
|
||||
}
|
||||
audio_ret = factory_audio_play_prompt(FT_AUDIO_SHUTDOWN_PATH);
|
||||
if (audio_ret != 0) {
|
||||
ft_protocol_session_result(0, FT_ERR_FINAL_AUDIO);
|
||||
while (1) ql_rtos_task_sleep_s(60);
|
||||
|
||||
Reference in New Issue
Block a user