void bz_bluetooth_init(void) { bt_fw_stack_init(); hci_td_init(); lc_init(); lmp_init(); #ifdef LE_MODE_EN //--- ll module init--- if (IS_BT40) { ll_init(); } #endif #if defined (_3DD_FUNCTION_SUPPORT_) || defined (_DAPE_TEST_USE_GPIO1_AS_FRAME_SYNC) #ifdef _3DD_FUNCTION_SUPPORT_ if (IS_SUPPORT_3DG_APP) #endif { bt_3dd_driver_init(); } #endif init_hci(); }
int main(int argc, char *argv[]) { int fd; if(argc <= 2) { list_help(); return -1; } if(strcmp(argv[2], "-d") == 0 || strcmp(argv[2], "-c") == 0 || strcmp(argv[2], "-q") == 0 || strcmp(argv[2], "-p") == 0 || strcmp(argv[2], "-s") == 0 || strcmp(argv[2], "-r") == 0) { // connect devices if(strcmp(argv[2], "-c") == 0) { if (argc <= 3) { printf("resolvable-scanner \"port\" -c [bdaddr]\n"); return -1; } else { char *pattern = "^\\w{2}:\\w{2}:\\w{2}:\\w{2}:\\w{2}:\\w{2}$"; int cflags = REG_EXTENDED; regmatch_t pmatch[1]; regex_t reg; regcomp(®, pattern, cflags); int status = regexec(®, argv[3], 1, pmatch, 0); regfree(®); if(status == REG_NOMATCH) { printf("invalid mac address\n"); return -1; } } } // disconnect deivces else if(strcmp(argv[2], "-q") == 0) { if (argc <= 3) { printf("test \"port\" -q [handle]\n"); return -1; } if(strlen(argv[3]) != 4) { printf("invalid handle(length != 4)\n"); return -1; } } // pair devices & register to server else if(strcmp(argv[2], "-p") == 0 || strcmp(argv[2], "-r") == 0) { if (argc <= 3) { printf("test \"port\" -p [handle]\n"); return -1; } if(strlen(argv[3]) != 4) { printf("invalid handle(length != 4)\n"); return -1; } } fd = init_port(argv[1]); if(fd == -1) return -1; if(init_hci(fd)<=0) { printf("HCI initialize failed\n"); return -1; } } else { list_help(); return -1; } if(strcmp(argv[2], "-d") == 0) listen_serial_port(fd, REQUEST_DISCOVERY, NULL, NULL); else if(strcmp(argv[2], "-c") == 0) listen_serial_port(fd, REQUEST_CONNECT, argv[3], NULL); else if(strcmp(argv[2],"-q") == 0) listen_serial_port(fd, REQUEST_DISCONNECT,NULL,argv[3]); else if(strcmp(argv[2],"-p") == 0) listen_serial_port(fd, REQUEST_PAIRING,NULL,argv[3]); else if(strcmp(argv[2],"-r") == 0) listen_serial_port(fd, REQUEST_PAIRING_REGISTER,NULL,argv[3]); if(strcmp(argv[2], "-s") == 0) listen_serial_port(fd, REQUEST_SCAN, NULL, NULL); return 0; }
/*---------------------------------------------------------------------------*/ int main(void) { uint16_t rval; /* init hardware layer */ init_hci(); timer1_init(); init_serial(); sei(); led1_high(); led2_high(); /* init protothreads */ PT_INIT(&blink_pt); PT_INIT(&nrf24_pt); PT_INIT(&www_client_pt); PT_INIT(&www_server_pt); PT_INIT(&udp_server_pt); PT_INIT(&coap_server_pt); PT_INIT(&temperature_pt); PT_INIT(&udp_broadcast_pt); /* greeting message */ dbg(PSTR("> Hello World!\r\n")); /* init the ethernet chip */ enc28j60Init(mymac); enc28j60PhyWrite(PHLCON,0x476); /* get automatic IP */ rval=0; init_mac(mymac); while(rval==0) { plen=enc28j60PacketReceive(BUFFER_SIZE, buf); rval=packetloop_dhcp_initial_ip_assignment(buf,plen,mymac[5]); } dhcp_get_my_ip(myip,netmask,gwip); client_ifconfig(myip,netmask); /* learn the MAC address of the gateway */ get_mac_with_arp(gwip,0,&arpresolver_result_callback); while(get_mac_with_arp_wait()) { plen=enc28j60PacketReceive(BUFFER_SIZE, buf); packetloop_arp_icmp_tcp(buf,plen); } /* set WWW server port */ www_server_port(MYWWWPORT); dbg(PSTR("> System is ready.\r\n")); led1_low(); led2_low(); /* main loop */ while(1) { if(enc28j60linkup()) { /* poll hardware ethernet buffer */ plen = enc28j60PacketReceive(BUFFER_SIZE,buf); /* terminate the buffer */ buf[BUFFER_SIZE]='\0'; /* handle DHCP messages if neccessary */ plen = packetloop_dhcp_renewhandler(buf,plen); /* handle and analyse the packet slightly */ dat_p = packetloop_arp_icmp_tcp(buf,plen); if( dat_p == 0) { udp_client_check_for_dns_answer(buf,plen); } new_packet = 0xFF; PT_SCHEDULE(blink_thread(&blink_pt)); PT_SCHEDULE(nrf24_thread(&nrf24_pt)); PT_SCHEDULE(www_server_thread(&www_server_pt)); PT_SCHEDULE(udp_server_thread(&udp_server_pt)); PT_SCHEDULE(www_client_thread(&www_client_pt)); PT_SCHEDULE(coap_server_thread(&coap_server_pt)); PT_SCHEDULE(temperature_thread(&temperature_pt)); PT_SCHEDULE(udp_broadcast_thread(&udp_broadcast_pt)); } } return 0; }