typedef struct communication_data_ {
gboolean is_initialized;
gboolean is_running;
+ gboolean is_connected;
car_info_t *car_info;
guint source_id;
} communication_data_t;
retvm_if(_communication.is_initialized, -1, "Cloud communication is already initialized");
_communication.car_info = car_info_create();
- if (set_car_id() != 0) {
- return -1;
- }
- if (set_car_ip() != 0) {
- return -1;
- }
- if (set_car_name() != 0) {
- return -1;
- }
- if (set_ap_mac() != 0) {
- return -1;
- }
- if (set_ap_ssid() != 0) {
- return -1;
- }
+ set_car_id();
+ set_car_ip();
+ set_car_name();
+ set_ap_mac();
+ set_ap_ssid();
net_util_set_wifi_connection_changed_cb(wifi_changed_cb, NULL);
+ _communication.is_connected = car_info_get_ap_mac(_communication.car_info) && car_info_get_ap_ssid(_communication.car_info);
_communication.is_initialized = true;
return 0;
}
void cloud_communication_stop()
{
retm_if(!_communication.is_initialized, "Cloud communication is not initialized");
- retm_if(_communication.is_running, "Cloud communication is already stopped");
+ retm_if(!_communication.is_running, "Cloud communication is already stopped");
g_source_remove(_communication.source_id);
_communication.is_running = FALSE;
car_info_destroy(_communication.car_info);
}
-
void cloud_communication_post_lap(const long laptime, const char *driver_name)
{
+ retm_if(!_communication.is_connected, "Car is not connected to network");
lap_info_t *lap = lap_info_create();
lap_info_set_car_id(lap, car_info_get_car_id(_communication.car_info));
static gboolean post_timer_cb(gpointer data)
{
retv_if(!data, FALSE);
+ retvm_if(!_communication.is_connected, TRUE, "Car is not connected to network");
car_info_t *car = (car_info_t *)data;
cloud_request_api_racing_post(car, post_response_cb, NULL);
return TRUE;
car_info_set_car_ap_mac(_communication.car_info, ap_mac);
car_info_set_ap_ssid(_communication.car_info, ap_ssid);
car_info_set_car_ip(_communication.car_info, ip_addr);
+ _communication.is_connected = ap_mac && ap_ssid;
}
+
wifi_manager_ap_h ap_h = NULL;
int ssid_len;
int ret = WIFI_MANAGER_ERROR_NONE;
-
free(net_util.ap_ssid);
net_util.ap_ssid = NULL;
int ret = 0;
free(net_util.ip_addr);
- net_util.ap_ssid = NULL;
+ net_util.ip_addr = NULL;
if (net_util.net_state == CONNECTION_TYPE_DISCONNECTED) {
return -1;
_set_ap_mac();
_set_ap_ssid();
_set_ip_addr();
-
- if (type == CONNECTION_TYPE_WIFI && net_util.cb) {
+ if ((type == CONNECTION_TYPE_WIFI || type == CONNECTION_TYPE_DISCONNECTED) && net_util.cb) {
net_util.cb(net_util.ap_mac, net_util.ap_ssid, net_util.ip_addr, net_util.cb_user_data);
}
-}
\ No newline at end of file
+}