static BOOLEAN send_app_connect_signal(int fd, const bt_bdaddr_t* addr, int channel, int status, int send_fd) { /* typedef struct { short size; bt_bdaddr_t bd_addr; int channel; int status; } __attribute__((packed)) sock_connect_signal_t; */ sock_connect_signal_t cs; cs.size = sizeof(cs); cs.bd_addr = *addr; cs.channel = channel; cs.status = status; if(send_fd != -1) { if(sock_send_fd(fd, (const uint8_t*)&cs, sizeof(cs), send_fd) == sizeof(cs)) return TRUE; else APPL_TRACE_ERROR2("sock_send_fd failed, fd:%d, send_fd:%d", fd, send_fd); } else if(sock_send_all(fd, (const uint8_t*)&cs, sizeof(cs)) == sizeof(cs)) { return TRUE; } return FALSE; }
static bool send_app_scn(rfc_slot_t *slot) { if(slot->scn_notified == true) { //already send, just return success. return true; } slot->scn_notified = true; return sock_send_all(slot->fd, (const uint8_t*)&slot->scn, sizeof(slot->scn)) == sizeof(slot->scn); }
static inline BOOLEAN send_app_scn(rfc_slot_t* rs) { if(sock_send_all(rs->fd, (const uint8_t*)&rs->scn, sizeof(rs->scn)) == sizeof(rs->scn)) { return TRUE; } return FALSE; }
static inline BOOLEAN send_app_psm(l2c_slot_t* ls) { if(sock_send_all(ls->fd, (const uint8_t*)&ls->psm, sizeof(ls->psm)) == sizeof(ls->psm)) { return TRUE; } return FALSE; }
static bool send_app_connect_signal(int fd, const bt_bdaddr_t* addr, int channel, int status, int send_fd) { sock_connect_signal_t cs; cs.size = sizeof(cs); cs.bd_addr = *addr; cs.channel = channel; cs.status = status; cs.max_rx_packet_size = 0; // not used for RFCOMM cs.max_tx_packet_size = 0; // not used for RFCOMM if (send_fd == INVALID_FD) return sock_send_all(fd, (const uint8_t *)&cs, sizeof(cs)) == sizeof(cs); return sock_send_fd(fd, (const uint8_t *)&cs, sizeof(cs), send_fd) == sizeof(cs); }