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