Pulse Oximeter (NONIN) communicates with mbed via Bluetooth dongle and sends Heart Rate and Oxygen Saturation via GPRS module

Dependencies:   C12832 GPS GSM mbed

Fork of myBlueUSB_localfix by Nobuaki Aoki

ftclasslibusbdevbt.h

Committer:
samialshorman
Date:
2015-04-14
Revision:
3:55a622e3dbb5
Parent:
0:003889bc474f

File content as of revision 3:55a622e3dbb5:

#ifndef FTCLASSLIBUSBDEVBT_H
#define FTCLASSLIBUSBDEVBT_H


class ftbtdev {//small object for ft BT enumeration
    inquiry_info info;
public:
    ftbtdev(inquiry_info* ii) {
        info = *ii;
    }
    BD_ADDR* BtAddr() {
        return &info.bdaddr;
    }
};

class ftdev {//this should in the future encapsulate the real TXC
    int sock;
    int parseState;
    unsigned short X1_crc, X1_len, X1_pos;
    unsigned char *X1_pkt;
    unsigned short chksum();
    void parse(const unsigned char *, unsigned);
public:
    ftdev(): sock(0) { parseState = 0;}
    int Open(BD_ADDR *bt_addr, int chan=1, SocketCallback cb=&ftdev::recv) {
        L2CAPAddr s;
        s.bdaddr = *bt_addr;
        s.psm = chan;//abuse the psm for the channelID
        sock = Socket_Open(SOCKET_RFCOM, &s.hdr, cb, this);//Open the serial connection via RFCOMM
        if (sock<=0)
           printf("Opening of RFCOMM socket for ftdevice failed (%d)\n", sock);
        return sock;
    }
    static void recv(int socket, SocketState state, const u8* data, int len, void* userData) {
        if (userData) ((ftdev*)userData)->receive(socket, state, data, len);
    }
    void receive(int socket, SocketState state, const u8* data, int len);// {printf("ftdev::receive was called: socket %d, state=%d, length=%d\n", socket, state, len);}
};

extern ftdev _ftdev;

unsigned InitFtBtDeviceList();
int GetNrOfFtBtDevices();
ftbtdev* GetFtUsbDeviceHandle(unsigned  Num);
unsigned OpenFtBtDevice(ftbtdev* d);

#endif