![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
class library to access fischertechnik interfaces via USB
Dependencies: FatFileSystem mbed myBlueUSB neigbourhood rfcomm sdp
Diff: myBlueUSB/sdp/sdp_data.h
- Revision:
- 1:4676e8b9b357
- Parent:
- 0:7da612835693
--- a/myBlueUSB/sdp/sdp_data.h Wed Jun 15 19:12:25 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,116 +0,0 @@ -#ifndef SDP_DATA_H -#define SDP_DATA_H - -#include <vector> - -extern const unsigned char base_uuid[16];// = { 0xfb, 0x34, 0x9b, 0x5f, 0x80, 0, 0x07, 0x70, 0, 0x10, 0, 0}; - -class sdp_data { -public: - enum elements { NULL_, UNSIGNED, SIGNED, UUID, STRING, BOOL, SEQUENCE, ALTERNATIVE, URL}; -private: - enum elements type; - char size; - union { - unsigned data; - char *str; -#ifdef LONGUUID - unsigned short uuid[8]; -#endif - }; - vector<sdp_data*> sequence; //not allowed to be in union - static char ret[12]; - char *longstr; -public: - sdp_data(): type(NULL_), size(0), longstr(0) { - //printf("NULL%d ", size); - } - sdp_data(unsigned d, unsigned sz=4): type(UNSIGNED), size(sz), longstr(0) { - data=d; - //printf("UINT%d=%u ", size, data); - } - sdp_data(unsigned short d, unsigned sz=2): type(UNSIGNED), size(sz), longstr(0) { - data=d; - //printf("UINT%d=%u ", size, data); - } - sdp_data(signed d, unsigned sz=4): type(SIGNED), size(sz), longstr(0) { - data=d; - //printf("INT%d=%d ", size, data); - } - sdp_data(bool d, unsigned sz=1): type(BOOL), size(sz), longstr(0) { - data=d; - //printf("BOOL%d=%u ", size, data); - } - sdp_data(char*s, unsigned sz=0): type(STRING), longstr(0) { - if (sz) size = sz+1; - else size = strlen(s)+1; - str = new char[size]; - strncpy(str, s, size); - str[size-1] = '\0'; - //printf("STR%d='%s' ", size, str); - } - sdp_data(enum elements t, unsigned d, unsigned sz=2): type(t), size(sz), longstr(0) { - if (t==UUID) { -#ifdef LONGUUID - memcpy(uuid, base_uuid, 16); - uuid[6] = d; - uuid[7] = d>>16; - // printf("UUID%d=%04X%04X ", size, uuid[7], uuid[6]); -#else - data = d; -#endif - } else printf("Please use other constructor for type %d\n", t); - } - sdp_data(enum elements t, char *d=0, unsigned sz=0): type(t), size(sz), longstr(0) { - switch (t) { -#ifdef LONGUUID - case UUID: - memcpy(uuid, d, size); - // printf("UUID%d=%08X ", size, uuid[6]); - break; -#endif - case URL: - //size = strlen(d)+1; - str = new char[size+1]; - strcpy(str, d); - // printf("URL%d='%u' ", size, str); - break; - case SEQUENCE: - case ALTERNATIVE: - break; - default: - printf("Please use other constructor for type %d\n", t); - } - } - ~sdp_data() { - switch (type) { - case STRING: - case URL: - delete[] str; - break; - case SEQUENCE: - case ALTERNATIVE: - for (int i = 0; i < sequence.size(); i++) - delete sequence.at(i); - break; - } - if (longstr) - delete[] longstr; - } - void add_element(sdp_data *el) { - sequence.push_back(el); - size += el->Size(); - } - unsigned asUnsigned() ; - const char* asString(bool alt=false) ; - unsigned Size() ; - unsigned items() { return sequence.size();} - sdp_data* item(int i) { return sequence[i];} - void remove(int i) { sequence[i] = 0;} - unsigned sizedesc(unsigned char *buf) ; - void revcpy(unsigned char*d, const unsigned char*s, int n) ; - unsigned build(unsigned char *buf, unsigned max) ; - bool findUUID(unsigned uuid); -}; - -#endif \ No newline at end of file