static void queue_int_add(connect_node_t *p_param) { connect_node_t *p_node = GKI_getbuf(sizeof(connect_node_t)); ASSERTC(p_node != NULL, "Failed to allocate new list node", 0); memcpy(p_node, p_param, sizeof(connect_node_t)); if (!connect_queue) { connect_queue = list_new(GKI_freebuf); ASSERTC(connect_queue != NULL, "Failed to allocate list", 0); } list_append(connect_queue, p_node); }
static void queue_int_add(connect_node_t *p_param) { connect_node_t *p_node = GKI_getbuf(sizeof(connect_node_t)); ASSERTC(p_node != NULL, "Failed to allocate new list node", 0); if (p_node) memcpy(p_node, p_param, sizeof(connect_node_t)); else { BTIF_TRACE_ERROR("%s, Failed to allocate new list node"); return; } if (!connect_queue) { connect_queue = list_new(GKI_freebuf); ASSERTC(connect_queue != NULL, "Failed to allocate list", 0); } if (connect_queue) list_append(connect_queue, p_node); else BTIF_TRACE_ERROR("%s, Failed to allocate list"); }
static void bte_hf_client_evt(tBTA_HF_CLIENT_EVT event, tBTA_HF_CLIENT *p_data) { bt_status_t status; /* switch context to btif task context (copy full union size for convenience) */ status = btif_transfer_context(btif_hf_client_upstreams_evt, (uint16_t)event, (void*)p_data, sizeof(*p_data), NULL); /* catch any failed context transfers */ ASSERTC(status == BT_STATUS_SUCCESS, "context transfer failed", status); }
void compress(uint32_t buf, uint32_t size) { size_t count = 0; uint32_t sunk = 0; uint32_t polled = 0; // Compression in progress. //compression_in_progress = true; //printf("Buf %d compression start...\r\n", buf); // Clear encoder state machine heatshrink_encoder_reset(&hse); while (sunk < size) { ASSERTC(heatshrink_encoder_sink(&hse, &(data_buffers[buf][sunk]), size - sunk, &count) >= 0); sunk += count; if (sunk == size) { ASSERT_EQ(HSER_FINISH_MORE, heatshrink_encoder_finish(&hse)); } HSE_poll_res pres; do { /* "turn the crank" */ pres = heatshrink_encoder_poll(&hse, &transmission_buffer[polled], TRANSMISSION_BUF_SIZE - polled, &count); ASSERTC(pres >= 0); polled += count; } while (pres == HSER_POLL_MORE); ASSERT_EQ(HSER_POLL_EMPTY, pres); if (polled >= TRANSMISSION_BUF_SIZE) { printf("compression should never expand that muchr\r\n"); } if (sunk == size) { ASSERT_EQ(HSER_FINISH_DONE, heatshrink_encoder_finish(&hse)); } } // Finished compression. buffers_ready[buf] = false; printf("Buf %d compression done\r\n", buf); send_data(transmission_buffer, polled); }
static void bte_hd_evt(tBTA_HD_EVT event, tBTA_HD *p_data) { bt_status_t status; int param_len = 0; tBTIF_COPY_CBACK *p_copy_cback = NULL; BTIF_TRACE_API("%s event=%d", __FUNCTION__, event); switch (event) { case BTA_HD_ENABLE_EVT: case BTA_HD_DISABLE_EVT: case BTA_HD_UNREGISTER_APP_EVT: param_len = sizeof(tBTA_HD_STATUS); break; case BTA_HD_REGISTER_APP_EVT: param_len = sizeof(tBTA_HD_REG_STATUS); break; case BTA_HD_OPEN_EVT: case BTA_HD_CLOSE_EVT: case BTA_HD_VC_UNPLUG_EVT: param_len = sizeof(tBTA_HD_CONN); break; case BTA_HD_GET_REPORT_EVT: param_len += sizeof(tBTA_HD_GET_REPORT); break; case BTA_HD_SET_REPORT_EVT: param_len = sizeof(tBTA_HD_SET_REPORT) + p_data->set_report.len; p_copy_cback = set_report_copy_cb; break; case BTA_HD_SET_PROTOCOL_EVT: param_len += sizeof(p_data->set_protocol); break; case BTA_HD_INTR_DATA_EVT: param_len = sizeof(tBTA_HD_INTR_DATA) + p_data->intr_data.len; p_copy_cback = intr_data_copy_cb; break; } status = btif_transfer_context(btif_hd_upstreams_evt, (uint16_t)event, (void*)p_data, param_len, p_copy_cback); ASSERTC(status == BT_STATUS_SUCCESS, "context transfer failed", status); }
static void queue_int_add(connect_node_t *p_param) { connect_node_t *p_list = connect_queue; connect_node_t *p_node = GKI_getbuf(sizeof(connect_node_t)); ASSERTC(p_node != NULL, "Failed to allocate new list node", 0); memcpy(p_node, p_param, sizeof(connect_node_t)); if (connect_queue == NULL) { connect_queue = p_node; return; } while (p_list->p_next) p_list = p_list->p_next; p_list->p_next = p_node; }
static void bte_hf_evt(tBTA_AG_EVT event, tBTA_AG *p_data) { bt_status_t status; int param_len = 0; /* TODO: BTA sends the union members and not tBTA_AG. If using param_len=sizeof(tBTA_AG), we get a crash on memcpy */ if (BTA_AG_REGISTER_EVT == event) param_len = sizeof(tBTA_AG_REGISTER); else if (BTA_AG_OPEN_EVT == event) param_len = sizeof(tBTA_AG_OPEN); else if (BTA_AG_CONN_EVT == event) param_len = sizeof(tBTA_AG_CONN); else if ( (BTA_AG_CLOSE_EVT == event) || (BTA_AG_AUDIO_OPEN_EVT == event) || (BTA_AG_AUDIO_CLOSE_EVT == event)) param_len = sizeof(tBTA_AG_HDR); else if (p_data) param_len = sizeof(tBTA_AG_VAL); /* switch context to btif task context (copy full union size for convenience) */ status = btif_transfer_context(btif_hf_upstreams_evt, (uint16_t)event, (void*)p_data, param_len, NULL); /* catch any failed context transfers */ ASSERTC(status == BT_STATUS_SUCCESS, "context transfer failed", status); }