HTTP_RESULT ntyHttpCreate(void *_self) { NattyHttp *http = (NattyHttp*)_self; kal_uint32 acct_id = 0; kal_uint8 val; void *pNetwork = ntyNetworkInstance(); acct_id = ntyGetAccountId(pNetwork); if (acct_id == 0) { nty_printf("acct_id don't init \r\n"); return NTY_HTTP_FAILED; } if (!ntyHostNameHaveParsed(http)) { strcpy(http->hostName, GAODE_SERVER_NAME); ntyGetHostByName(http->hostName); } http->socketid = soc_create(SOC_PF_INET, SOC_SOCK_STREAM, 0, MOD_MMI, acct_id); if(http->socketid >= 0) { val = KAL_TRUE; soc_setsockopt((kal_uint8)http->socketid, SOC_NBIO, &val, sizeof(val)); val = SOC_WRITE | SOC_READ | SOC_CONNECT | SOC_CLOSE; soc_setsockopt((kal_uint8)http->socketid,SOC_ASYNC, &val, sizeof(val)); nty_printf("{%s:%d} --> socketid : %d\r\n", __FILE__, __LINE__, http->socketid); return NTY_HTTP_SUCCESS; } else { return NTY_HTTP_FAILED; } }
//----------------------------------------------------------------------------- kal_bool gps_soc_create_socket(void) { /*----------------------------------------------------------------*/ /* Local Variables */ /*----------------------------------------------------------------*/ kal_uint8 val = 1; /*----------------------------------------------------------------*/ /* Code Body */ /*----------------------------------------------------------------*/ gps_soc_transaction.state = GPS_SOC_CREATING; gps_soc_log("gps_soc_create_socket, transaction state: %d", gps_soc_transaction.state); gps_soc_transaction.socket_id = soc_create(PF_INET, SOCK_STREAM, 0, MOD_GPS_TCPIP, gps_soc_transaction.nwt_acount_id); gps_soc_log("Create socket: %d", gps_soc_transaction.socket_id); if (gps_soc_transaction.socket_id < 0) { gps_soc_log("Create socket fail !!"); return KAL_FALSE; } if (soc_setsockopt(gps_soc_transaction.socket_id, SOC_NBIO, &val, sizeof(val)) < 0) { gps_soc_log("Set socket to nonblock mode error !!"); return KAL_FALSE; } val = SOC_READ | SOC_WRITE | SOC_CLOSE | SOC_CONNECT; if (soc_setsockopt(gps_soc_transaction.socket_id, SOC_ASYNC, &val, sizeof(val)) < 0) { gps_soc_log("Set socket to nonblock mode error !!"); return KAL_FALSE; } gps_soc_transaction.state = GPS_SOC_CREATED; gps_soc_log("gps_soc_create_socket, transaction state: %d", gps_soc_transaction.state); return KAL_TRUE; }
void EmPingStartAct(kal_char *serv_addr) { kal_uint32 acc_id = 5;//account id kal_uint16 i, j = 0; kal_char str_buff[50]; kal_uint8 val = 1; PING_CONTEXT_INFO(state) = PING_ACTIVE; /* Clean all the statistics for the previous session */ PING_CONTEXT_INFO(maxRspMS) = 0; PING_CONTEXT_INFO(minRspMS) = 0; PING_CONTEXT_INFO(avgRspMS) = 0; PING_CONTEXT_INFO(rcvdCounter) = 0; PING_CONTEXT_INFO(lostCounter) = 0; if(PING_CONTEXT_INFO(echo_req) != NULL) { OslMfree(PING_CONTEXT_INFO(echo_req)); } if(PING_CONTEXT_INFO(echo_rsp) != NULL) { OslMfree(PING_CONTEXT_INFO(echo_rsp)); } //PING_CONTEXT_INFO(socketId) = soc_create(PF_INET, SOCK_RAW, IPPROTO_ICMP, MOD_PING, acc_id); PING_CONTEXT_INFO(socketId) = soc_create(PF_INET, SOCK_RAW, IPPROTO_ICMP, MOD_MMI, acc_id); if(PING_CONTEXT_INFO(socketId) >= 0) { if(soc_setsockopt(PING_CONTEXT_INFO(socketId), SOC_NBIO, &val, sizeof(val)) < 0) { kal_print("Set socket to nonblock mode error !!"); return ; } val = SOC_READ | SOC_WRITE; if(soc_setsockopt(PING_CONTEXT_INFO(socketId), SOC_ASYNC, &val, sizeof(val)) < 0) { kal_print("Set socket to nonblock mode error !!"); return ; } PING_CONTEXT_INFO(echo_req) = (kal_uint8*)OslMalloc(PING_CONTEXT_INFO(pingSize)+8); PING_CONTEXT_INFO(echo_rsp) = (kal_uint8*)OslMalloc(PING_CONTEXT_INFO(pingSize)+8); PING_CONTEXT_INFO(seqNo) = 0; PING_CONTEXT_INFO(currCount) = 0; PING_CONTEXT_INFO(pingSrvAddr.port) = 100;//identifier PING_CONTEXT_INFO(pingSrvAddr.addr_len) = 4;//any PING_CONTEXT_INFO(pingSrvAddr.addr[0])=0; PING_CONTEXT_INFO(pingSrvAddr.addr[1])=0; PING_CONTEXT_INFO(pingSrvAddr.addr[2])=0; PING_CONTEXT_INFO(pingSrvAddr.addr[3])=0; #ifdef MMI_ON_HARDWARE_P if(soc_bind(PING_CONTEXT_INFO(socketId), &PING_CONTEXT_INFO(pingSrvAddr)) != 0) { soc_close(PING_CONTEXT_INFO(socketId)); if(PING_CONTEXT_INFO(echo_req) != NULL) { OslMfree(PING_CONTEXT_INFO(echo_req)); } if(PING_CONTEXT_INFO(echo_rsp) != NULL) { OslMfree(PING_CONTEXT_INFO(echo_rsp)); } PING_CONTEXT_INFO(echo_req) = NULL; PING_CONTEXT_INFO(echo_rsp) = NULL; kal_print("bind error"); } #endif PING_CONTEXT_INFO(pingSrvAddr.addr[0]) = atoi(strtok(serv_addr, "."));//ip string: "140.112.1.1" to integer PING_CONTEXT_INFO(pingSrvAddr.addr[1]) = atoi(strtok(NULL, ".")); PING_CONTEXT_INFO(pingSrvAddr.addr[2]) = atoi(strtok(NULL, ".")); PING_CONTEXT_INFO(pingSrvAddr.addr[3]) = atoi(strtok(NULL, ".")); PING_CONTEXT_INFO(pingSrvAddr.addr_len) = 4; kal_sprintf(str_buff, "Pinging %d.%d.%d.%d with %d bytes of data", PING_CONTEXT_INFO(pingSrvAddr.addr[0]) , PING_CONTEXT_INFO(pingSrvAddr.addr[1]) , PING_CONTEXT_INFO(pingSrvAddr.addr[2]) , PING_CONTEXT_INFO(pingSrvAddr.addr[3]) , PING_CONTEXT_INFO(pingSize)); kal_print(str_buff); EmPingUpdateScreen(EM_PING_START, -1); EmPingSendPkt(); } //if(s >= 0) else { ASSERT(PING_CONTEXT_INFO(socketId) >= 0); } }
//----------------------------------------------------------------------------- int gps_soc_tcp_send_request2(void) { kal_uint8 val = 1; // non-blocking mode, default kal_int32 res; kal_int8 error; kal_int32 detail_cause; kal_bool set_header = KAL_FALSE; gps_soc_transaction.socket_id = soc_create(PF_INET, SOCK_STREAM, 0, MOD_GPS_TCPIP, gps_soc_transaction.nwt_acount_id); gps_soc_log("soc_create, socket_id: %d", gps_soc_transaction.socket_id); if (gps_soc_transaction.socket_id < 0) { if (gps_soc_transaction.callback != NULL) { gps_soc_transaction.callback(0, NULL, 0); } return GPS_SOC_ERROR; } val = 0; // blocking mode res = soc_setsockopt(gps_soc_transaction.socket_id, SOC_NBIO, &val, sizeof(val)); gps_soc_log("soc_setsockopt, val: %d, result: %d", val, res); if (res < 0) { goto ERROR_HANDLE; } val = SOC_READ | SOC_WRITE | SOC_CLOSE | SOC_CONNECT; res = soc_setsockopt(gps_soc_transaction.socket_id, SOC_ASYNC, &val, sizeof(val)); gps_soc_log("soc_setsockopt, val: %d, result: %d", val, res); if (res < 0) { goto ERROR_HANDLE; } gps_soc_log("Connect to %d.%d.%d.%d and port: %d", gps_soc_transaction.server_ip_addr.addr[0], gps_soc_transaction.server_ip_addr.addr[1], gps_soc_transaction.server_ip_addr.addr[2], gps_soc_transaction.server_ip_addr.addr[3], gps_soc_transaction.server_ip_addr.port); res = soc_connect(gps_soc_transaction.socket_id, &gps_soc_transaction.server_ip_addr); gps_soc_log("soc_connect res: %d", res); if (res < 0) { res = soc_get_last_error(gps_soc_transaction.socket_id, &error, &detail_cause); gps_soc_log("res: %d soc_connect error: %d, detail_cause: %d", res, error, detail_cause); goto ERROR_HANDLE; } while (gps_soc_transaction.snd_counter < gps_soc_transaction.snd_data_len) { const GPS_GPRMC_Packed_Struct_t *pPack; char *pBuff; int i, count; pPack = (GPS_GPRMC_Packed_Struct_t *)gps_soc_transaction.rcvd_buffer; pPack += gps_soc_transaction.snd_counter; pBuff = gps_soc_transaction.snd_buffer; pBuff[0] = '\0'; if (!set_header) { sprintf(pBuff, "#%s#%s#%s#%s#%d\r\n", gps_imei_str, gps_gprs_username, gps_gprs_userpwd, gps_soc_upldtype_str(gps_soc_transaction.cause_type), gps_soc_transaction.snd_data_len); set_header = KAL_TRUE; } count = (gps_soc_transaction.snd_data_len - gps_soc_transaction.snd_counter) <= GPS_SEND_ITEMS_ONETIME ? (gps_soc_transaction.snd_data_len - gps_soc_transaction.snd_counter) : GPS_SEND_ITEMS_ONETIME; for (i = 0; i < count; i++) { Result_t result = RESULT_ERROR; pBuff = gps_soc_transaction.snd_buffer + strlen(gps_soc_transaction.snd_buffer); sprintf(pBuff, "#"); pBuff = gps_soc_transaction.snd_buffer + strlen(gps_soc_transaction.snd_buffer); sprintf(pBuff, "%04x%04x", pPack->lac, pPack->cid) ; pBuff = gps_soc_transaction.snd_buffer + strlen(gps_soc_transaction.snd_buffer); result = GPS_APP_GPRMC_Packed2Str(pBuff, pPack); pPack++; } if (gps_soc_transaction.snd_counter + count >= (kal_int32) gps_soc_transaction.snd_data_len) { pBuff = gps_soc_transaction.snd_buffer + strlen(gps_soc_transaction.snd_buffer); sprintf(pBuff, "##\r\n"); } gps_soc_log("send data len: %d, data: %s", strlen(gps_soc_transaction.snd_buffer), gps_soc_transaction.snd_buffer); res = soc_send(gps_soc_transaction.socket_id, (kal_uint8*)gps_soc_transaction.snd_buffer, strlen(gps_soc_transaction.snd_buffer), 0); gps_soc_log("Http send request result, sent_bytes: %d", res); if (res < 0) { res = soc_get_last_error(gps_soc_transaction.socket_id, &error, &detail_cause); gps_soc_log("res: %d soc_send error: %d, detail_cause: %d", res, error, detail_cause); break; } kal_sleep_task(250); gps_soc_transaction.snd_counter += count; } ERROR_HANDLE: if (gps_soc_transaction.callback != NULL) { gps_soc_transaction.callback(0, NULL, 0); } kal_sleep_task(250); res = soc_close(gps_soc_transaction.socket_id); gps_soc_log("soc_close res: %d", res); if (res < 0) { res = soc_get_last_error(gps_soc_transaction.socket_id, &error, &detail_cause); gps_soc_log("res: %d soc_close error: %d, detail_cause: %d", res, error, detail_cause); } kal_sleep_task(250); soc_close_nwk_account_by_id(MOD_GPS_TCPIP, gps_soc_transaction.nwt_acount_id); return GPS_SOC_SUCCESS; }
VMINT vm_tls_new_ctx(vm_tls_version_enum ver, vm_socket_type_enum sock_type, VMINT apn, vm_tls_side_enum side, callback_t cb) { kal_int32 ret; vm_tls_context_t * ctx_p = NULL; VMUINT acct_id = 0; kal_uint8 val; MMI_TRACE(TRACE_GROUP_8, TRC_MRE_SSL_S, 1, __LINE__); ctx_p = vm_tls_malloc_ctx(); if (NULL == ctx_p) { MMI_TRACE(TRACE_GROUP_8, TRC_MRE_SSL_E1, 1, __LINE__); return VM_TLS_RET_BASE -2; } ret = tls_new_ctx((tls_version_enum)ver, (tls_side_enum)side, MOD_MMI, STR_MRE_TITLE); if (ret < 0) { vm_tls_free_ctx(ctx_p); MMI_TRACE(TRACE_GROUP_8, TRC_MRE_SSL_E2, 1, ret); return ret; } ctx_p->tls_ctx = ret; ctx_p->cb = cb; ctx_p->soc_id = 0; ctx_p->p_hdl = vm_pmng_get_current_handle(); if (VM_E_SOC_SUCCESS != vm_get_encoded_dtacct_id(apn, &acct_id)) { MMI_TRACE(TRACE_GROUP_8, TRC_MRE_SSL_E3, 1, __LINE__); return VM_TLS_RET_BASE -3; } ctx_p->soc_id = soc_create(SOC_PF_INET, sock_type, 0, MOD_MMI, acct_id); if (0 > ctx_p->soc_id) { // TODO: print ctx_p->soc_id ctx_p->soc_id = 0; MMI_TRACE(TRACE_GROUP_8, TRC_MRE_SSL_E4, 1, __LINE__); return VM_TLS_RET_BASE -3; } val = KAL_TRUE; ret = soc_setsockopt(ctx_p->soc_id, SOC_NBIO, &val, sizeof(val)); if (ret < 0) { MMI_TRACE(TRACE_GROUP_8, TRC_MRE_SSL_E5, 1, __LINE__); return VM_TLS_RET_BASE -5; } val = SOC_READ | SOC_WRITE | SOC_CONNECT | SOC_CLOSE; ret = soc_setsockopt(ctx_p->soc_id, SOC_ASYNC, &val, sizeof(val)); if (ret < 0) { MMI_TRACE(TRACE_GROUP_8, TRC_MRE_SSL_E6, 1, __LINE__); return VM_TLS_RET_BASE -6; } MMI_TRACE(TRACE_GROUP_8, TRC_MRE_DLS_LOG, ctx_p->tls_ctx, ctx_p->soc_id, ctx_p->p_hdl, 0, 0, ctx_p->cb, 1, __LINE__); if (0 == g_ref_count++) { mmi_frm_set_protocol_event_handler(MSG_ID_APP_SOC_NOTIFY_IND, (PsIntFuncPtr)vm_tls_notify_cb, MMI_TRUE); mmi_frm_set_protocol_event_handler(MSG_ID_APP_TLS_NOTIFY_IND, (PsIntFuncPtr)vm_tls_notify_ind, MMI_TRUE); mmi_frm_set_protocol_event_handler(MSG_ID_APP_TLS_ALERT_IND, (PsIntFuncPtr)vm_tls_alert_ind, MMI_TRUE); mmi_frm_set_protocol_event_handler(MSG_ID_APP_TLS_INVALID_CERT_IND, (PsIntFuncPtr)vm_tls_invalid_cert_ind, MMI_TRUE); mmi_frm_set_protocol_event_handler(MSG_ID_APP_TLS_CLIENT_AUTH_IND, (PsIntFuncPtr)vm_tls_client_auth_ind, MMI_TRUE); MMI_TRACE(TRACE_GROUP_8, TRC_MRE_SSL_E7, 1, __LINE__); } MMI_TRACE(TRACE_GROUP_8, TRC_MRE_SSL_E, 1, ctx_p->res_id); return ctx_p->res_id; }