void client_loop(void) { int i = 0; //loop iterator if (socket_conneted()) { if (client_logined()) { if (data.isGpsFixed) { MSG_GPS* msg = alloc_msg(CMD_GPS, sizeof(MSG_GPS)); if (!msg) { LOG_ERROR("alloc message failed"); } msg->gps = data.gps; socket_sendData(msg, sizeof(MSG_GPS)); LOG_DEBUG("send GPS message"); } else { size_t msgLen = sizeof(MSG_HEADER) + sizeof(CGI) + sizeof(CELL) * data.cellNum; MSG_HEADER* msg = alloc_msg(CMD_CELL, msgLen); CGI* cgi = (CGI*) msg + 1; CELL* cell = (CELL*)cgi + 1; if (!msg) { LOG_ERROR("alloc message failed"); } memcpy(cgi, &(data.cgi), sizeof(CGI)); for (i = 0; i < data.cellNum; i++) { memcpy(cell + i, data.cells + i, sizeof(CELL)); } socket_sendData(msg, msgLen); LOG_DEBUG("send CELL message"); } } else { MSG_LOGIN_REQ* msg = alloc_msg(CMD_LOGIN, sizeof(MSG_LOGIN_REQ)); u8 imei[16] = {0}; eat_get_imei(imei, 15); if (!msg) { LOG_ERROR("alloc message failed"); } memcpy(msg->IMEI, imei, 16); socket_sendData(msg, sizeof(MSG_LOGIN_REQ)); LOG_DEBUG("send login message"); } } }
s32 socket_sendDataWaitAck(void* data, s32 len, MSG_RESEND_FAILED_HANDLER pfn, void* userdata) { s32 rc = socket_sendData(data, len); msg_push(data, len, pfn, userdata); return rc; }
s32 socket_sendDataDirectly(void* data, s32 len) { s32 rc = socket_sendData(data, len); free_msg(data); return rc; }