static void mce_state_cb(const GIsiMessage *msg, void *data) { struct isi_cb_data *cbd = data; struct ofono_modem *modem = cbd->user; ofono_modem_online_cb_t cb = cbd->cb; struct isi_data *isi = ofono_modem_get_data(modem); uint8_t cause; if (!check_response_status(msg, MCE_RF_STATE_RESP)) goto error; if (!g_isi_msg_data_get_byte(msg, 0, &cause)) goto error; DBG("MCE cause: %s (0x%02X)", mce_status_info(cause), cause); if (cause == MCE_OK) { isi->online_cbd = cbd; return; } if (cause == MCE_ALREADY_ACTIVE) { CALLBACK_WITH_SUCCESS(cb, cbd->data); g_free(cbd); return; } error: CALLBACK_WITH_FAILURE(cb, cbd->data); g_free(cbd); }
static int build_response(const http_request_t *request,http_response_t *response) { char buffer[MAX_HEADER_VALUE_LENGTH]; int head_count=0; time_t now=0; struct tm *t; strcat(response->resource_path,request->uri); set_index(response->resource_path); response->status = check_response_status(request->method,response->resource_path); handle_error(response->status, response->resource_path); response->major_version = request->major_version; response->minor_version = request->minor_version; now = time(NULL); t = gmtime(&now); strftime(buffer,30,"%a, %d %b %Y %H:%M:%S %Z",t); set_response_field_name_and_value(response,"Date",buffer); set_response_field_name_and_value(response,"Server","CSUC HTTP"); set_response_field_name_and_value(response,"Content-Type",get_extension(response->resource_path)); sprintf(buffer,"%d",file_size(response->resource_path)); add_to_total_size(atoi(buffer)); set_response_field_name_and_value(response,"Content-Length",buffer); return 1; }
static void mce_query_cb(const GIsiMessage *msg, void *data) { struct ofono_modem *modem = data; struct isi_data *isi = ofono_modem_get_data(modem); uint8_t current; uint8_t target; if (!check_response_status(msg, MCE_MODEM_STATE_QUERY_RESP)) return; if (!g_isi_msg_data_get_byte(msg, 0, ¤t) || !g_isi_msg_data_get_byte(msg, 1, &target)) return; DBG("Modem state: current=%s (0x%02X) target=%s (0x%02X)", mce_modem_state_name(current), current, mce_modem_state_name(target), target); if (current == target) set_power_by_mce_state(modem, isi, current); }
/* * Checks that the response finished successfully * with a valid response status and code. */ void check_response(churl_context* context) { check_response_code(context); check_response_status(context); }