int bluetooth_open(const char *addr, uint8_t channel, struct gn_statemachine *state) { bdaddr_t bdaddr; struct sockaddr_rc raddr; int fd; if (str2ba((char *)addr, &bdaddr)) { fprintf(stderr, _("Invalid bluetooth address \"%s\"\n"), addr); return -1; } if ((fd = socket(PF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM)) < 0) { perror(_("Can't create socket")); return -1; } memset(&raddr, 0, sizeof(raddr)); raddr.rc_family = AF_BLUETOOTH; bacpy(&raddr.rc_bdaddr, &bdaddr); dprintf("Channel: %d\n", channel); if (channel < 1) { if (!strcmp(state->config.model, "gnapplet") || !strcmp(state->config.model, "symbian")) channel = get_serial_channel(&bdaddr, 1); else channel = get_serial_channel(&bdaddr, 0); } dprintf("Channel: %d\n", channel); /* If none channel found, fail. */ if (channel < 1) { fprintf(stderr, _("Cannot find any appropriate rfcomm channel and none was specified in the config.\n")); close(fd); return -1; } dprintf("Using channel: %d\n", channel); raddr.rc_channel = channel; if (connect(fd, (struct sockaddr *)&raddr, sizeof(raddr)) < 0) { perror(_("Can't connect")); close(fd); return -1; } /* Ignore errors. If the socket was not set in the async way, * we can live with that. */ setNonblocking(fd); return fd; }
#define PORTC (*(volatile unsigned int *)(NETARM_GEN_MODULE_BASE + NETARM_GEN_PORTC)) #endif /* wait until transmitter is ready for another character */ #define TXWAITRDY(registers) \ { \ ulong tmo = get_timer(0) + 1 * CFG_HZ; \ while (((registers)->status_a & NETARM_SER_STATA_TX_RDY) == 0 ) { \ if (get_timer(0) > tmo) \ break; \ } \ } #ifndef CONFIG_UART1_CONSOLE volatile netarm_serial_channel_t *serial_reg_ch1 = get_serial_channel(0); volatile netarm_serial_channel_t *serial_reg_ch2 = get_serial_channel(1); #else volatile netarm_serial_channel_t *serial_reg_ch1 = get_serial_channel(1); volatile netarm_serial_channel_t *serial_reg_ch2 = get_serial_channel(0); #endif extern void _netarm_led_FAIL1(void); /* * Setup both serial i/f with given baudrate */ void serial_setbrg (void) { /* set 0 ... make sure pins are configured for serial */ #if !defined(CONFIG_NETARM_NS7520)