{
{MMI_FZD_ACTION_NONE, "NONE"}, //MMI_FZD_ACTION_NONE
- #ifdef __MMI_ZHSX_SUPPORT_FZD_SERVER_WULIAN__
+ #ifdef __MMI_ZHSX_SUPPORT_WULIAN_SERVER__
{MMI_FZD_ACTION_LINK, "LK"},
#endif
{MMI_FZD_ACTION_HEARTBEAT, "KA"},
{MMI_FZD_ACTION_UNBIND, "DLT"},
#ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL__
+ #ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL_WULIAN__
{MMI_FZD_WATCH_GET_VC_CONFIG, "jup_hoo_config"},
{MMI_FZD_WATCH_GET_VC_CONTACT, "video_contact"},
{MMI_FZD_SERVER_VC_CALL_REQUEST, "jup_hoo_request"},
{MMI_FZD_WATCH_VC_CALL_RESPONSE, "jup_hoo_response"},
#endif
+ #ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL_FZD__
+ {MMI_FZD_WATCH_GET_VC_CONFIG, "JPREG"},
+ {MMI_FZD_WATCH_GET_VC_CONTACT, "MEMBERS"},
+ {MMI_FZD_WATCH_VC_CALL_REQUEST, "AGTALK"},
+ {MMI_FZD_SERVER_VC_CALL_RESPONSE, "RTALK"},
+ {MMI_FZD_SERVER_VC_CALL_REQUEST, "CALLING"},
+ {MMI_FZD_WATCH_VC_CALL_RESPONSE, "RCALLING"},
+ #endif
+ #endif
/*******add before this line*******/
switch(action)
{
- #ifdef __MMI_ZHSX_SUPPORT_FZD_SERVER_WULIAN__
+ #ifdef __MMI_ZHSX_SUPPORT_WULIAN_SERVER__
case MMI_FZD_ACTION_LINK:
mmi_protocol_fzd_parse_LINK(next_buff, next_buff_len);
break;
break;
#ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL__
+ #if defined(__MMI_ZHSX_SUPPORT_VIDEO_CALL_WULIAN__) || defined(__MMI_ZHSX_SUPPORT_VIDEO_CALL_FZD__)
case MMI_FZD_WATCH_GET_VC_CONFIG:
mmi_protocol_fzd_parse_WATCH_GET_VC_CONFIG(next_buff, next_buff_len);
break;
case MMI_FZD_WATCH_VC_CALL_RESPONSE:
break;
#endif
+ #endif
default:
}
-#ifdef __MMI_ZHSX_SUPPORT_FZD_SERVER_WULIAN__
+#ifdef __MMI_ZHSX_SUPPORT_WULIAN_SERVER__
bool mmi_protocol_fzd_action_LINK(void)
{
return mmi_protocol_fzd_send_without_data(MMI_FZD_ACTION_LINK);
mmi_protocol_watch_timed_mission_action();
//video call
+ #ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL__
mmi_protocol_fzd_action_get_vc_config();
+ #endif
}
}
#ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL__
+#ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL_WULIAN__
bool mmi_protocol_fzd_action_get_vc_config(void)
{
return mmi_protocol_fzd_send_without_data(MMI_FZD_WATCH_GET_VC_CONFIG);
if(0 == t_value)
{
// the other party is not online
- mmi_vc_ring_off_action(NULL, LV_EVENT_CLICKED);
+ mmi_vc_call_action_call_stop();
}
else
{
if(0 == t_value)
{
// the other party is reject
- mmi_vc_ring_off_action(NULL, LV_EVENT_CLICKED);
+ mmi_vc_call_action_call_stop();
}
else
{
return result;
}
+#endif
+
+#ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL_FZD__
+bool mmi_protocol_fzd_action_get_vc_config(void)
+{
+ return mmi_protocol_fzd_send_without_data(MMI_FZD_WATCH_GET_VC_CONFIG);
+}
+
+bool mmi_protocol_fzd_action_get_vc_contact(void)
+{
+ return mmi_protocol_fzd_send_without_data(MMI_FZD_WATCH_GET_VC_CONTACT);
+}
+
+bool mmi_protocol_fzd_parse_WATCH_GET_VC_CONFIG(unsigned char * next_buff, unsigned int next_buff_len)
+{
+ bool result = false;
+ //MMI_PROTOCOL_FZD_ACTION_ENUM action = MMI_FZD_WATCH_GET_VC_CONFIG;
+
+ if(NULL == next_buff || 0 == next_buff_len)
+ {
+ PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+ return false;
+ }
+
+ result = true;
+ //mmi_protocol_fzd_send_without_data(action);
+
+ char * t_char = NULL;
+ int32_t t_id = 0;
+
+ t_char = next_buff;
+ t_id = atoi(t_char);
+ PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %d\n", __FUNCTION__, __LINE__, t_id);
+
+ //get contact
+ mmi_protocol_fzd_action_get_vc_contact();
+
+ return result;
+}
+
+bool mmi_protocol_fzd_parse_WATCH_GET_VC_CONTACT(unsigned char * next_buff, unsigned int next_buff_len)
+{
+ bool result = false;
+ //MMI_PROTOCOL_FZD_ACTION_ENUM action = MMI_FZD_WATCH_GET_VC_CONTACT;
+
+ if(NULL == next_buff || 0 == next_buff_len)
+ {
+ PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+ return false;
+ }
+
+ result = true;
+ //mmi_protocol_fzd_send_without_data(action);
+
+ // MEMBERS,0036003500300034003800320031002C0069006E00630061007200740065007300
+
+ PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %d\n", __FUNCTION__, __LINE__, next_buff_len);
+ PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG]: %s\n", next_buff);
+ PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG]: %s\n", next_buff + 64);
+
+ nv_watch_vc_contact_t t_vc_contact = {0};
+ char temp_buffer[4] = {0};
+ char * temp_ptr = next_buff;
+ uint8_t i = 0;
+ uint8_t t_len = 0;
+ char t_content_buffer[NV_WATCH_VC_CONTACT_NUMBER_LEN] = {0};
+ uint8_t t_next = 0, t_current = 0;
+ uint8_t t_offset = 0;
+
+ while((NULL != temp_ptr) && (i < next_buff_len))
+ {
+ memset(temp_buffer, 0x0, sizeof(temp_buffer));
+ mmi_unicode_hex_str_to_utf8_str(temp_ptr + t_offset, 4, temp_buffer, &t_len);
+ if(0x002C == temp_buffer[0]) // ,
+ {
+ if(2 == t_current)
+ {
+ PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
+ t_current = 0;
+ t_next++;
+
+ if(NV_WATCH_VC_CONTACT_TOTAL <= t_next)
+ {
+ PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+ break;
+ }
+ }
+ else if(1 == t_current) // name
+ {
+ PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
+ memset(t_content_buffer, 0x0, sizeof(t_content_buffer));
+ mmi_unicode_hex_str_to_utf8_str(temp_ptr, t_offset, t_content_buffer, &t_len);
+ strncpy(t_vc_contact.name[t_next], t_content_buffer, NV_WATCH_VC_CONTACT_NAME_LEN - 1);
+ t_current++;
+ }
+ else // user id
+ {
+ PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
+ memset(t_content_buffer, 0x0, sizeof(t_content_buffer));
+ mmi_unicode_hex_str_to_utf8_str(temp_ptr, t_offset, t_content_buffer, &t_len);
+ strncpy(t_vc_contact.number[t_next], t_content_buffer, NV_WATCH_VC_CONTACT_NUMBER_LEN - 1);
+ t_current++;
+ }
+
+ temp_ptr += t_offset + 4;
+ t_offset = 0;
+ }
+ else
+ {
+ t_offset += 4;
+ PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %d\n", __FUNCTION__, __LINE__, t_offset);
+ }
+
+ i += 4;
+ PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %d\n", __FUNCTION__, __LINE__, i);
+ }
+
+ t_next++;
+
+ PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %d\n", __FUNCTION__, __LINE__, t_next);
+ for(i = 0; i < t_next; i++)
+ {
+ PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %s\n", __FUNCTION__, __LINE__, t_vc_contact.number[i]);
+ }
+
+ t_vc_contact.total = t_next;
+ mmi_vc_contact_set(&t_vc_contact);
+
+ return result;
+}
+
+bool mmi_protocol_fzd_action_VC_CALL_REQUEST(char * number, uint8_t call_type)
+{
+ bool result = false;
+ MMI_PROTOCOL_FZD_ACTION_ENUM action = MMI_FZD_WATCH_VC_CALL_REQUEST;
+ unsigned char content_buff[NV_WATCH_VC_CONTACT_NUMBER_LEN + 8] = {0};
+ unsigned int content_lenth = 0;
+
+ sprintf(content_buff, ",%d,%s", call_type, number);
+ content_lenth = strlen(content_buff);
+
+ result = mmi_protocol_fzd_send_with_data(action, content_buff, content_lenth);
+
+ return result;
+}
+
+// [XT*334588000000156*0006*AGTALK,0,efef2323423423,123]
+// 0-continue; other-stop
+bool mmi_protocol_fzd_parse_WATCH_VC_CALL_REQUEST(unsigned char * next_buff, unsigned int next_buff_len)
+{
+ bool result = false;
+
+ if(NULL == next_buff || 0 == next_buff_len)
+ {
+ PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+ return false;
+ }
+
+ result = true;
+
+ char * t_value = NULL;
+ char * t_tokens = NULL;
+ char * t_ticket = NULL;
+
+ t_value = km_strtok_r(NULL, ",", &next_buff);
+ t_tokens = km_strtok_r(NULL, ",", &next_buff);
+ t_ticket = next_buff;
+
+
+ PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: t_value=%d\n", __FUNCTION__, __LINE__, t_value);
+ PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%d]: t_tokens,%d,%s\n", __LINE__, strlen(t_tokens), t_tokens+0);
+ PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%d]: %s\n", __LINE__, t_tokens+31);
+ PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%d]: %s\n", __LINE__, t_tokens+63);
+ PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%d]: %s\n", __LINE__, t_tokens+95);
+ PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%d]: t_ticket,%d,%s\n", __LINE__, strlen(t_ticket), t_ticket+0);
+
+
+ if(0 == atoi(t_value))
+ {
+ // go on
+ mmi_vc_call_action_dialing_ext(t_tokens, t_ticket);
+ }
+ else
+ {
+ // stop
+ mmi_vc_call_action_call_stop();
+ }
+
+ return result;
+}
+
+// reject
+bool mmi_protocol_fzd_parse_SERVER_VC_CALL_RESPONSE(unsigned char * next_buff, unsigned int next_buff_len)
+{
+ bool result = false;
+ MMI_PROTOCOL_FZD_ACTION_ENUM action = MMI_FZD_SERVER_VC_CALL_RESPONSE;
+
+ if(NULL == next_buff || 0 == next_buff_len)
+ {
+ PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+ return false;
+ }
+
+ result = true;
+ mmi_protocol_fzd_send_without_data(action);
+
+ // the other party is reject
+ mmi_vc_call_action_call_stop();
+
+ return result;
+}
+
+bool mmi_protocol_fzd_action_SERVER_VC_CALL_REQUEST(int8_t state)
+{
+ bool result = false;
+ MMI_PROTOCOL_FZD_ACTION_ENUM action = MMI_FZD_SERVER_VC_CALL_REQUEST;
+ unsigned char content_buff[8] = {0};
+ unsigned int content_lenth = 0;
+
+ sprintf(content_buff, ",%d", state);
+ content_lenth = strlen(content_buff);
+
+ result = mmi_protocol_fzd_send_with_data(action, content_buff, content_lenth);
+
+ return result;
+}
+
+// [XT*YYYYYYYYYYYYYYY*LEN*CALLING,ºô½ÐÕßid,»áÒéid(ûÓÐÔòÁô¿Õ£¬µ«Î»Öñ£Áô£©,ÒôƵ»¹ÊÇÊÓÆµ£¨0ΪÒôƵ£¬1ΪÊÓÆµ£©£¬ÉùÍøToken]
+bool mmi_protocol_fzd_parse_SERVER_VC_CALL_REQUEST(unsigned char * next_buff, unsigned int next_buff_len)
+{
+ bool result = false;
+ MMI_PROTOCOL_FZD_ACTION_ENUM action = MMI_FZD_SERVER_VC_CALL_REQUEST;
+
+ if(NULL == next_buff || 0 == next_buff_len)
+ {
+ PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+ return false;
+ }
+ result = true;
+ mmi_protocol_fzd_action_SERVER_VC_CALL_REQUEST(0);
+
+ char * t_ptr = NULL;
+ char t_number[NV_WATCH_VC_CONTACT_NUMBER_LEN] = {0};
+ char t_ticket[64 + 1] = {0};
+ uint8_t t_calltype = 0;
+ char t_tokens[128 + 1] = {0};
+
+ t_ptr = km_strtok_r(NULL, ",", &next_buff);
+ strncpy(t_number, t_ptr, NV_WATCH_VC_CONTACT_NUMBER_LEN - 1);
+
+ t_ptr = km_strtok_r(NULL, ",", &next_buff);
+ strncpy(t_ticket, t_ptr, strlen(t_ptr));
+
+ t_ptr = km_strtok_r(NULL, ",", &next_buff);
+ t_calltype = atoi(t_ptr);
+
+ t_ptr = km_strtok_r(NULL, ",", &next_buff);
+ strncpy(t_tokens, t_ptr, strlen(t_ptr));
+
+ mmi_vc_call_action_incoming(t_number, t_calltype, t_ticket, t_tokens);
+
+ return result;
+}
+
+// [XT*YYYYYYYYYYYYYYY*LEN*RCALLING,ºô½ÐÕßid,»áÒéid(ûÓÐÔòÁô¿Õ£¬µ«Î»Öñ£Áô£©,ÒôƵ»¹ÊÇÊÓÆµ£¨0ΪÒôƵ£¬1ΪÊÓÆµ£©]
+bool mmi_protocol_fzd_action_VC_CALL_RESPONSE(char * number, char * ticket, MODEM_VIDEO_CALL_TYPE type)
+{
+ bool result = false;
+ MMI_PROTOCOL_FZD_ACTION_ENUM action = MMI_FZD_WATCH_VC_CALL_RESPONSE;
+
+ if(NULL == number) // hang up
+ {
+ result = mmi_protocol_fzd_send_without_data(action);
+ }
+ else // reject
+ {
+ unsigned char content_buff[NV_WATCH_VC_CONTACT_NUMBER_LEN + 64 + 8] = {0};
+ unsigned int content_lenth = 0;
+
+ sprintf(content_buff, ",%s,%s,%d", number, ticket, type);
+ content_lenth = strlen(content_buff);
+
+ result = mmi_protocol_fzd_send_with_data(action, content_buff, content_lenth);
+ }
+ return result;
+}
+#endif
#endif