/*---------------------------------------------------------------------------*/ mqtt_status_t mqtt_register(struct mqtt_connection *conn, struct process *app_process, char *client_id, mqtt_event_callback_t event_callback, uint16_t max_segment_size) { if(strlen(client_id) < 1) { return MQTT_STATUS_INVALID_ARGS_ERROR; } /* Set defaults - Set all to zero to begin with */ memset(conn, 0, sizeof(struct mqtt_connection)); string_to_mqtt_string(&conn->client_id, client_id); conn->event_callback = event_callback; conn->app_process = app_process; conn->auto_reconnect = 1; conn->max_segment_size = max_segment_size; reset_defaults(conn); mqtt_init(); list_add(mqtt_conn_list, conn); DBG("MQTT - Registered successfully\n"); return MQTT_STATUS_OK; }
struct bt_le *bt_le_new(void) { unsigned char setup_cmd[2]; struct bt_le *hci; hci = calloc(1, sizeof(*hci)); if (!hci) return NULL; reset_defaults(hci); hci->vhci_fd = open("/dev/vhci", O_RDWR); if (hci->vhci_fd < 0) { free(hci); return NULL; } setup_cmd[0] = HCI_VENDOR_PKT; setup_cmd[1] = HCI_BREDR; if (write(hci->vhci_fd, setup_cmd, sizeof(setup_cmd)) < 0) { close(hci->vhci_fd); free(hci); return NULL; } mainloop_add_fd(hci->vhci_fd, EPOLLIN, vhci_read_callback, hci, NULL); hci->crypto = bt_crypto_new(); return bt_le_ref(hci); }
struct bt_amp *bt_amp_new(void) { unsigned char setup_cmd[2]; struct bt_amp *amp; amp = calloc(1, sizeof(*amp)); if (!amp) return NULL; reset_defaults(amp); amp->vhci_fd = open("/dev/vhci", O_RDWR); if (amp->vhci_fd < 0) { free(amp); return NULL; } setup_cmd[0] = HCI_VENDOR_PKT; setup_cmd[1] = HCI_AMP; if (write(amp->vhci_fd, setup_cmd, sizeof(setup_cmd)) < 0) { close(amp->vhci_fd); free(amp); return NULL; } mainloop_add_fd(amp->vhci_fd, EPOLLIN, vhci_read_callback, amp, NULL); return bt_amp_ref(amp); }
static void cmd_reset(struct bt_le *hci, const void *data, uint8_t size) { uint8_t status; reset_defaults(hci); status = BT_HCI_ERR_SUCCESS; cmd_complete(hci, BT_HCI_CMD_RESET, &status, sizeof(status)); }
static void cmd_reset(struct bt_amp *amp, const void *data, uint8_t size) { uint8_t status; reset_defaults(amp); amp->local_assoc[0] = 0x00; amp->local_assoc_len = 1; status = BT_HCI_ERR_SUCCESS; cmd_complete(amp, BT_HCI_CMD_RESET, &status, sizeof(status)); }
/*---------------------------------------------------------------------------*/ static void connect_tcp(struct mqtt_connection *conn) { conn->state = MQTT_CONN_STATE_TCP_CONNECTING; reset_defaults(conn); tcp_socket_register(&(conn->socket), conn, conn->in_buffer, MQTT_TCP_INPUT_BUFF_SIZE, conn->out_buffer, MQTT_TCP_OUTPUT_BUFF_SIZE, tcp_input, tcp_event); tcp_socket_connect(&(conn->socket), &(conn->server_ip), conn->server_port); }