#include <stdint.h> #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/socket.h> /* user space headers might not be there, define things ourselves. */ typedef struct { uint8_t b[6]; } __attribute__((packed)) vui_bdaddr_t; struct vui_sockaddr_rc { sa_family_t rc_family; vui_bdaddr_t rc_bdaddr; uint8_t rc_channel; }; #define VUI_AF_BLUETOOTH 31 #define VUI_BTPROTO_RFCOMM 3 #define VUI_BDADDR_ANY (&(vui_bdaddr_t) {{0, 0, 0, 0, 0, 0}}) int main (int argc, char **argv) { int nSocket; nSocket = socket(VUI_AF_BLUETOOTH, SOCK_STREAM, VUI_BTPROTO_RFCOMM); if (nSocket < 0) { // Not supported, nothing to test... return 1; } struct vui_sockaddr_rc aAddr; // Ignore return values. // Missing family bind(nSocket, (struct sockaddr *) &aAddr, sizeof(aAddr)); aAddr.rc_family = VUI_AF_BLUETOOTH; // Missing bdaddr. bind(nSocket, (struct sockaddr *) &aAddr, sizeof(aAddr)); aAddr.rc_bdaddr = *VUI_BDADDR_ANY; // Missing channel. bind(nSocket, (struct sockaddr *) &aAddr, sizeof(aAddr)); aAddr.rc_channel = 5; bind(nSocket, (struct sockaddr *) &aAddr, sizeof(aAddr)); return 0; }