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");
}
예제 #3
0
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);
}
예제 #4
0
파일: main.c 프로젝트: JulianYG/WNR
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;
}
예제 #7
0
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);
}