コード例 #1
0
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();
}
コード例 #2
0
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(&reg, pattern, cflags);
        int status = regexec(&reg, argv[3], 1, pmatch, 0);
        regfree(&reg);
        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;
}
コード例 #3
0
ファイル: main.c プロジェクト: hebron/enc28j60_experiments
/*---------------------------------------------------------------------------*/
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;
}