📄 kpd_test_misc0.c
字号:
}
return test_verdict;
}
/********************************************************************************/
/* */
/* Function Name: kpd_test_misc_8 */
/* */
/* Notes: This function executes KPD misc tests. */
/* */
/* Revision History: */
/* 11/05/01 Laurent Sollier Create. */
/* */
/********************************************************************************/
T_RV_MISC_RET kpd_test_misc_8(void)
{
T_RV_MISC_RET test_verdict = TEST_PASSED;
UINT16 received_event;
T_RV_HDR* msg_p;
BOOL exit = FALSE;
char texte[20];
T_KPD_SUBSCRIBER subscriber_id;
T_KPD_VIRTUAL_KEY_TABLE notified_keys;
T_KPD_VIRTUAL_KEY_TABLE new_keys;
T_RV_RETURN kpd_return_path;
/* Test definition */
kpd_test_trace("*** KPD TEST MISC8: Set key config:");
kpd_test_trace("*** KPD TEST MISC8: - Key 1 associated to Id 120");
kpd_test_trace("*** KPD TEST MISC8: - Key 2 associated to Id 121");
kpd_test_trace("*** KPD TEST MISC8: - Key 3 associated to Id 122");
kpd_test_trace("*** KPD TEST MISC8: - Key DISC associated to Id 200");
kpd_test_trace("*** KPD TEST MISC8: Press DISC to exit");
/* Keypad registration */
kpd_return_path.addr_id = kpd_test_path.addr_id + KPD_TEST_MBOX_0;
kpd_return_path.callback_func = 0;
notified_keys.nb_notified_keys = KPD_NB_PHYSICAL_KEYS;
kpd_subscribe (&subscriber_id,
KPD_DEFAULT_MODE,
¬ified_keys,
kpd_return_path);
notified_keys.nb_notified_keys = 4;
notified_keys.notified_keys[0] = KPD_KEY_1;
notified_keys.notified_keys[1] = KPD_KEY_2;
notified_keys.notified_keys[2] = KPD_KEY_3;
notified_keys.notified_keys[3] = KPD_KEY_DISCONNECT;
new_keys.nb_notified_keys = 4;
new_keys.notified_keys[0] = 120;
new_keys.notified_keys[1] = 121;
new_keys.notified_keys[2] = 122;
new_keys.notified_keys[3] = 200;
kpd_set_key_config(subscriber_id,¬ified_keys, &new_keys);
kpd_change_mode(subscriber_id, &new_keys, KPD_GAME_MODE);
/* loop to process messages */
while (!exit)
{
/* Wait for the necessary events (infinite wait for a msg in the mailbox 0). */
received_event = rvf_wait(RVF_TASK_MBOX_0_EVT_MASK,0);
if (received_event & RVF_TASK_MBOX_0_EVT_MASK)
{
/* Read the message */
msg_p = (T_RV_HDR *) rvf_read_mbox(0);
if (msg_p->dest_addr_id == (kpd_test_path.addr_id + KPD_TEST_MBOX_0))
{
switch (msg_p->msg_id)
{
case KPD_KEY_EVENT_MSG:
{
T_KPD_KEY_EVENT_MSG* msg_key_event_p = (T_KPD_KEY_EVENT_MSG*) msg_p;
sprintf(texte,"Key evt Id %d ",msg_key_event_p->key_info.virtual_key_id);
LCD_WriteString (5, 0, texte, NORMAL);
if (msg_key_event_p->key_info.press_state == KPD_FIRST_PRESS)
LCD_WriteString(6,0,"First press ", NORMAL);
if (msg_key_event_p->key_info.state == KPD_KEY_RELEASED)
LCD_WriteString(6,0,"Released ", NORMAL);
if (msg_key_event_p->key_info.virtual_key_id == 200)
{
kpd_unsubscribe(&subscriber_id);
rvf_delay(RVF_MS_TO_TICKS(1000));
exit = TRUE;
}
break;
}
case KPD_STATUS_MSG:
kpd_test_trace("Received status message in mailbox 0");
break;
default :
break;
}
rvf_free_buf(msg_p);
}
}
}
return test_verdict;
}
/********************************************************************************/
/* */
/* Function Name: kpd_test_misc_9 */
/* */
/* Notes: This function executes KPD misc tests. */
/* */
/* Revision History: */
/* 11/05/01 Laurent Sollier Create. */
/* */
/********************************************************************************/
T_RV_MISC_RET kpd_test_misc_9(void)
{
T_RV_MISC_RET test_verdict = TEST_PASSED;
UINT16 received_event;
T_RV_HDR* msg_p;
BOOL exit = FALSE;
char texte[20];
char* ascii_code;
T_KPD_SUBSCRIBER subscriber_id;
T_KPD_VIRTUAL_KEY_TABLE notified_keys;
T_RV_RETURN kpd_return_path;
T_KPD_MODE mode = KPD_DEFAULT_MODE;
/* Test definition */
kpd_test_trace("*** KPD TEST MISC9: All keys are notified of released event");
kpd_test_trace("*** KPD TEST MISC9: Press * to switch from DEFAULT to ALPHANUMERIC mode");
kpd_test_trace("*** KPD TEST MISC9: Display ASCII key value using kpd_get_ascii_key_code function");
kpd_test_trace("*** KPD TEST MISC9: Press DISC to exit");
/* Keypad registration */
kpd_return_path.addr_id = kpd_test_path.addr_id + KPD_TEST_MBOX_1;
kpd_return_path.callback_func = 0;
notified_keys.nb_notified_keys = KPD_NB_PHYSICAL_KEYS;
kpd_subscribe (&subscriber_id,
mode,
¬ified_keys,
kpd_return_path);
kpd_change_mode(subscriber_id, ¬ified_keys, KPD_DEFAULT_MODE);
/* loop to process messages */
while (!exit)
{
/* Wait for the necessary events (infinite wait for a msg in the mailbox 0). */
received_event = rvf_wait(RVF_TASK_MBOX_0_EVT_MASK,0);
if (received_event & RVF_TASK_MBOX_0_EVT_MASK)
{
/* Read the message */
msg_p = (T_RV_HDR *) rvf_read_mbox(0);
if (msg_p->dest_addr_id == (kpd_test_path.addr_id + KPD_TEST_MBOX_1))
{
switch (msg_p->msg_id)
{
case KPD_KEY_EVENT_MSG:
{
T_KPD_KEY_EVENT_MSG* msg_key_event_p = (T_KPD_KEY_EVENT_MSG*) msg_p;
kpd_get_ascii_key_code(msg_key_event_p->key_info.virtual_key_id,
mode, &ascii_code);
sprintf(texte,"Asc val '%s'",ascii_code);
LCD_WriteString (5, 0, " ", NORMAL);
LCD_WriteString (5, 0, texte, NORMAL);
if (msg_key_event_p->key_info.virtual_key_id == KPD_KEY_DISCONNECT)
{
kpd_unsubscribe(&subscriber_id);
exit = TRUE;
}
if (msg_key_event_p->key_info.virtual_key_id == KPD_KEY_STAR)
{
if (mode == KPD_DEFAULT_MODE)
mode = KPD_ALPHANUMERIC_MODE;
else
mode = KPD_DEFAULT_MODE;
kpd_change_mode(subscriber_id, ¬ified_keys, mode);
}
break;
}
case KPD_STATUS_MSG:
kpd_test_trace("Received status message in mailbox 1");
break;
default :
break;
}
rvf_free_buf(msg_p);
}
}
}
return test_verdict;
}
/********************************************************************************/
/* */
/* Function Name: kpd_test_misc_10 */
/* */
/* Notes: This function executes KPD misc tests. */
/* */
/* Revision History: */
/* 11/05/01 Laurent Sollier Create. */
/* */
/********************************************************************************/
void keypad_notification(void* msg_p)
{
T_RV_HDR* msg_hdr_p = (T_RV_HDR*) msg_p;
switch (msg_hdr_p->msg_id)
{
case KPD_KEY_EVENT_MSG:
{
T_KPD_KEY_EVENT_MSG* msg_key_event_p = (T_KPD_KEY_EVENT_MSG*) msg_hdr_p;
display_message(msg_key_event_p, 2);
}
case KPD_STATUS_MSG:
kpd_test_trace("Received status message");
break;
default :
break;
}
}
T_RV_MISC_RET kpd_test_misc_10(void)
{
T_RV_MISC_RET test_verdict = TEST_PASSED;
UINT16 received_event;
T_RV_HDR* msg_p;
BOOL exit = FALSE;
T_KPD_SUBSCRIBER subscriber_id0;
T_KPD_SUBSCRIBER subscriber_id1;
T_KPD_VIRTUAL_KEY_TABLE notified_keys;
T_RV_RETURN kpd_return_path;
T_KPD_MODE mode = KPD_DEFAULT_MODE;
/* Test definition */
kpd_test_trace("*** KPD TEST MISC10: All keys are notified of released event");
kpd_test_trace("*** KPD TEST MISC10: Use callback function to notify subscriber");
kpd_test_trace("*** KPD TEST MISC10: Press DISC to exit");
/* Keypad registration */
kpd_return_path.addr_id = kpd_test_path.addr_id + KPD_TEST_MBOX_0;
kpd_return_path.callback_func = 0;
notified_keys.nb_notified_keys = KPD_NB_PHYSICAL_KEYS;
kpd_subscribe (&subscriber_id0,
KPD_DEFAULT_MODE,
¬ified_keys,
kpd_return_path);
/* Keypad registration */
kpd_return_path.addr_id = 0;
kpd_return_path.callback_func = keypad_notification;
notified_keys.nb_notified_keys = KPD_NB_PHYSICAL_KEYS;
kpd_subscribe (&subscriber_id1,
mode,
¬ified_keys,
kpd_return_path);
/* Wait for exit message sent by callback function when key DISC is pressed. */
while (!exit)
{
received_event = rvf_wait(RVF_TASK_MBOX_0_EVT_MASK,0);
if (received_event & RVF_TASK_MBOX_0_EVT_MASK)
{
/* Read the message */
msg_p = (T_RV_HDR *) rvf_read_mbox(0);
if (msg_p->dest_addr_id == (kpd_test_path.addr_id + KPD_TEST_MBOX_0))
{
switch (msg_p->msg_id)
{
case KPD_KEY_EVENT_MSG:
{
T_KPD_KEY_EVENT_MSG* msg_key_event_p = (T_KPD_KEY_EVENT_MSG*) msg_p;
if (msg_key_event_p->key_info.virtual_key_id == KPD_KEY_DISCONNECT)
{
kpd_unsubscribe(&subscriber_id0);
kpd_unsubscribe(&subscriber_id1);
exit = TRUE;
}
break;
}
default :
break;
}
}
rvf_free_buf(msg_p);
}
}
return test_verdict;
}
/********************************************************************************/
/* */
/* Function Name: kpd_test_misc_11 */
/* */
/* Notes: This function executes KPD misc tests. */
/* */
/* Revision History: */
/* 11/05/01 Laurent Sollier Create. */
/* */
/********************************************************************************/
T_RV_MISC_RET kpd_test_misc_11(void)
{
T_RV_MISC_RET test_verdict = TEST_PASSED;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -