Home | History | Annotate | Download | only in linux
      1 #include <stdint.h>
      2 #include <stdio.h>
      3 #include <stdlib.h>
      4 #include <sys/types.h>
      5 #include <sys/socket.h>
      6 
      7 /* user space headers might not be there, define things ourselves. */
      8 typedef struct {
      9    uint8_t b[6];
     10 } __attribute__((packed)) vui_bdaddr_t;
     11 
     12 struct vui_sockaddr_rc {
     13 	sa_family_t	rc_family;
     14 	vui_bdaddr_t	rc_bdaddr;
     15 	uint8_t		rc_channel;
     16 };
     17 
     18 #define VUI_AF_BLUETOOTH 31
     19 #define VUI_BTPROTO_RFCOMM 3
     20 
     21 #define VUI_BDADDR_ANY (&(vui_bdaddr_t) {{0, 0, 0, 0, 0, 0}})
     22 
     23 int
     24 main (int argc, char **argv)
     25 {
     26   int nSocket;
     27 
     28   nSocket = socket(VUI_AF_BLUETOOTH, SOCK_STREAM, VUI_BTPROTO_RFCOMM);
     29 
     30   if (nSocket < 0)
     31     {
     32       // Not supported, nothing to test...
     33       return 1;
     34     }
     35 
     36   struct vui_sockaddr_rc aAddr;
     37   // Ignore return values.
     38 
     39   // Missing family
     40   bind(nSocket, (struct sockaddr *) &aAddr, sizeof(aAddr));
     41 
     42   aAddr.rc_family = VUI_AF_BLUETOOTH;
     43   // Missing bdaddr.
     44   bind(nSocket, (struct sockaddr *) &aAddr, sizeof(aAddr));
     45 
     46   aAddr.rc_bdaddr = *VUI_BDADDR_ANY;
     47   // Missing channel.
     48   bind(nSocket, (struct sockaddr *) &aAddr, sizeof(aAddr));
     49 
     50   aAddr.rc_channel = 5;
     51   bind(nSocket, (struct sockaddr *) &aAddr, sizeof(aAddr));
     52 
     53   return 0;
     54 }
     55