Esempio n. 1
0
static void handle_sdp_parser_event(sdp_query_event_t * event){
    sdp_query_attribute_value_event_t * ve;
    switch (event->type){
        case SDP_QUERY_ATTRIBUTE_VALUE:
            ve = (sdp_query_attribute_value_event_t*) event;
           // printf("handle_sdp_parser_event [ AID, ALen, DOff, Data] : [%x, %u, %u] BYTE %02x\n", 
           //          ve->attribute_id, ve->attribute_length, ve->data_offset, ve->data);
            
            switch (ve->attribute_id){
                case SDP_ProtocolDescriptorList:
                    // find rfcomm channel
                    handleProtocolDescriptorListData(ve->attribute_length, ve->data_offset, ve->data);
                    break;
                case 0x0100:
                    // get service name
                    handleServiceNameData(ve->attribute_length, ve->data_offset, ve->data);
                    break;
                default:
                    // give up
                    return;
            }
            break;
        case SDP_QUERY_COMPLETE:
            (*sdp_app_callback)((sdp_query_event_t*)&event, sdp_app_context);
            break;
    }
    // insert higher level code HERE
}
Esempio n. 2
0
static void handle_sdp_parser_event(sdp_query_event_t * event){
    sdp_query_attribute_value_event_t * ve;
    switch (event->type){
        case SDP_QUERY_SERVICE_RECORD_HANDLE:
            // handle service without a name
            if (sdp_rfcomm_channel_nr){
                emit_service();
            }

            // prepare for new record
            sdp_rfcomm_channel_nr = 0;
            sdp_service_name[0] = 0;
            break;
        case SDP_QUERY_ATTRIBUTE_VALUE:
            ve = (sdp_query_attribute_value_event_t*) event;
           // log_info("handle_sdp_parser_event [ AID, ALen, DOff, Data] : [%x, %u, %u] BYTE %02x", 
           //          ve->attribute_id, ve->attribute_length, ve->data_offset, ve->data);
            
            switch (ve->attribute_id){
                case SDP_ProtocolDescriptorList:
                    // find rfcomm channel
                    handleProtocolDescriptorListData(ve->attribute_length, ve->data_offset, ve->data);
                    break;
                case 0x0100:
                    // get service name
                    handleServiceNameData(ve->attribute_length, ve->data_offset, ve->data);
                    break;
                default:
                    // give up
                    return;
            }
            break;
        case SDP_QUERY_COMPLETE:
            // handle service without a name
            if (sdp_rfcomm_channel_nr){
                emit_service();
            }
            (*sdp_app_callback)(event, sdp_app_context);
            break;
    }
    // insert higher level code HERE
}