Example #1
0
void ble_scan(void)
{
  uint32_t count = 0;
  mico_bt_smart_scan_result_t *scan_result = NULL;
  /* Scan settings */
  mico_bt_smart_scan_settings_t scan_settings;

  scan_settings.type              = BT_SMART_PASSIVE_SCAN;
  scan_settings.filter_policy     = FILTER_POLICY_NONE;
  scan_settings.filter_duplicates = DUPLICATES_FILTER_ENABLED;
  scan_settings.interval          = MICO_BT_CFG_DEFAULT_HIGH_DUTY_SCAN_INTERVAL;
  scan_settings.window            = MICO_BT_CFG_DEFAULT_HIGH_DUTY_SCAN_WINDOW;
  scan_settings.duration_second   = 2;
  scan_settings.type = BT_SMART_PASSIVE_SCAN;

  /* Start scan */
  mico_bt_smartbridge_start_scan( &scan_settings, scan_complete_handler, ble_scan_handler );  

  mico_rtos_delay_seconds(2);

  mico_bt_smartbridge_stop_scan();

  mf_printf("BLE scan complete\r\n");
  mico_bt_smartbridge_get_scan_result_list( &scan_result, &count );

  if( count == 0 )
  {
    mf_printf( "No BLE device found\r\n" );
  }

  mf_printf("\r\n");
}
void mico_mfg_test(void)
{
    char str[64];
    char mac[6];
    char *ssid;
  
    sprintf(str, "Library Version: %s\r\n", system_lib_version());
	mf_printf(str);
    mf_printf("APP Version: ");
    memset(str, 0, sizeof(str));
    system_version(str, sizeof(str));
    mf_printf(str);
    mf_printf("\r\n");
    memset(str, 0, sizeof(str));
    wlan_driver_version(str, sizeof(str));
    mf_printf("Driver: ");
    mf_printf(str);
    mf_printf("\r\n");
	wlan_get_mac_address(mac);
	sprintf(str, "MAC: %02X-%02X-%02X-%02X-%02X-%02X\r\n",
			mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
	mf_printf(str);

    mfg_scan();

    ssid = ssid_get();
    mfg_connect(ssid);
    
    mico_thread_sleep(MICO_NEVER_TIMEOUT);
}
Example #3
0
static OSStatus ble_scan_handler( const mico_bt_smart_advertising_report_t* result )
{
    OSStatus err = kNoErr;
    char*        bd_addr_str = NULL;
    char str[128];

    bd_addr_str = DataToHexStringWithColons( (uint8_t *)result->remote_device.address, 6 );
    snprintf( str, 128, "  ADDR: %s, RSSI: %d", bd_addr_str, result->signal_strength );
    mf_printf(str);
    free( bd_addr_str );
    mf_printf("\r\n");
    
    /* Scan duration is complete */
    return err;
}
Example #4
0
/**
* @brief  Display the Main Menu on HyperTerminal
* @param  None
* @retval None
*/
static char * ssid_get(void)
{
  char *cmd;
  uint32_t remote_addr = 0xFFFFFFFF;
  
  while (1)  {                                 /* loop forever                */
    mf_printf ("\r\nMXCHIP_MFMODE> ");
    get_line();
    cmd = cmd_str;
    if (strncmp(cmd, "tcp ", 4) == 0) {
      mf_printf ("\r\n");
      remote_addr = inet_addr(cmd+4);
      if (remote_addr == 0)
        remote_addr = 0xffffffff;
      sprintf(cmd, "Use TCP send packet to 0x%X\r\n", (unsigned int)remote_addr);
      mf_printf (cmd);
    } else if (strncmp(cmd, "udp ", 4) == 0) {
      mf_printf ("\r\n");
      remote_addr = inet_addr(cmd+4);
      if (remote_addr == 0)
        remote_addr = 0xffffffff;
      sprintf(cmd, "Use UDP send packet to 0x%X\r\n", (unsigned int)remote_addr);
      mf_printf (cmd);
    }  else if (strncmp(cmd, "ssid ", 5) == 0) {
      mf_printf ("\r\n");
      return cmd+5;
    } else {
      mf_printf ("Please input as \"ssid <ssid_string>\"");
      continue;
    }
  }
}
Example #5
0
void mico_notify_WifiScanCompleteHandler( ScanResult *pApList, void * inContext )
{
    char str[64] = {'\0'};
    pApList->ApList[0].ssid[10] = '\0';  // truncate first 10 char
    sprintf(str, "%s Wi-Fi\r\nScan AP:\r\nssid :%10s\r\npower:%10d", OLED_MFG_TEST_PREFIX,
             pApList->ApList[0].ssid, pApList->ApList[0].ApPower);
    mf_printf(str);
    scanap_done = true;
}
Example #6
0
void mico_mfg_test(mico_Context_t *inContex)
{
  char str[64];
  char mac[6];
  char *ssid;
  UNUSED_PARAMETER(inContex);
  mico_uart_config_t uart_config;
  volatile ring_buffer_t  rx_buffer;
  volatile uint8_t *      rx_data;
  
  rx_data = malloc(50);
  require(rx_data, exit);
  
  /* Initialize UART interface */
  uart_config.baud_rate    = 115200;
  uart_config.data_width   = DATA_WIDTH_8BIT;
  uart_config.parity       = NO_PARITY;
  uart_config.stop_bits    = STOP_BITS_1;
  uart_config.flow_control = FLOW_CONTROL_DISABLED;
  uart_config.flags = UART_WAKEUP_DISABLE;
  
  ring_buffer_init  ( (ring_buffer_t *)&rx_buffer, (uint8_t *)rx_data, 50 );
  MicoUartInitialize( MFG_TEST, &uart_config, (ring_buffer_t *)&rx_buffer );  
  
  sprintf(str, "Library Version: %s\r\n", system_lib_version());
  mf_printf(str);
  mf_printf("APP Version: ");
  memset(str, 0, sizeof(str));
  system_version(str, sizeof(str));
  mf_printf(str);
  mf_printf("\r\n");
  memset(str, 0, sizeof(str));
  wlan_driver_version(str, sizeof(str));
  mf_printf("Driver: ");
  mf_printf(str);
  mf_printf("\r\n");
  wlan_get_mac_address(mac);
  sprintf(str, "MAC: %02X-%02X-%02X-%02X-%02X-%02X\r\n",
          mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
  mf_printf(str);
  
  mfg_scan();
  
  ssid = ssid_get();
  mfg_connect(ssid);
  
exit:
  mico_thread_sleep(MICO_NEVER_TIMEOUT);
}
Example #7
0
/* Scan complete handler. Scan complete event reported via this callback.
 * It runs on the MICO_NETWORKING_WORKER_THREAD context.
 */
static OSStatus scan_complete_handler( void *arg )
{
    UNUSED_PARAMETER(arg);
    OSStatus err = kNoErr;
    uint32_t count = 0;
    mico_bt_smart_scan_result_t *scan_result = NULL;


    mf_printf("BLE scan complete\r\n");
    err = mico_bt_smartbridge_get_scan_result_list( &scan_result, &count );
    require_noerr( err, exit );

    if( count == 0 )
    {
        mf_printf( "No ble device found\r\n" );
        err = kNotFoundErr;
        goto exit;
    }
    mf_printf("\r\n");
exit:
    /* Scan duration is complete */
    return err;
}
Example #8
0
void micokit_ext_mfg_test(mico_Context_t *inContext)
{
  OSStatus err = kUnknownErr;
  char str[64] = {'\0'};
  char mac[6];
  
  int rgb_led_hue = 0;
  
  uint8_t dht11_ret = 0;
  uint8_t dht11_temp_data = 0;
  uint8_t dht11_hum_data = 0;
  
  int light_ret = 0;
  uint16_t light_sensor_data = 0;
  
  int infrared_ret = 0;
  uint16_t infrared_reflective_data = 0;
  
  int32_t bme280_temp = 0;
  uint32_t bme280_hum = 0;
  uint32_t bme280_press = 0;
  
  UNUSED_PARAMETER(inContext);
  
  mico_rtos_init_semaphore(&mfg_test_state_change_sem, 1); 
  err = MICOAddNotification( mico_notify_WIFI_SCAN_COMPLETED, (void *)mico_notify_WifiScanCompleteHandler );
  require_noerr( err, exit );
  
  while(1){
    switch(mfg_test_module_number){
    case 0:  // mfg mode start
      {
        sprintf(str, "%s\r\nStart:\r\n%s\r\n%s", "TEST MODE", "  next: Key2", "  prev: Key1");
        mf_printf(str);
        while(kNoErr != mico_rtos_get_semaphore(&mfg_test_state_change_sem, MICO_WAIT_FOREVER));
        break;
      }
    case 1:  // OLED
      {
        while(kNoErr != mico_rtos_get_semaphore(&mfg_test_state_change_sem, 0))
        {
          sprintf(str, "%s OLED\r\n", OLED_MFG_TEST_PREFIX);
          mf_printf(str);
          mico_thread_msleep(300);
          
          mf_printf(mfg_test_oled_test_string);
          mico_thread_msleep(300);
        }
        OLED_Clear();
        break;
      }
    case 2:  // RGB_LED
      {
        sprintf(str, "%s RGB LED\r\nBlink: \r\n      R=>G=>B", OLED_MFG_TEST_PREFIX);
        mf_printf(str);
        
        while(kNoErr != mico_rtos_get_semaphore(&mfg_test_state_change_sem, 0))
        {
          hsb2rgb_led_open(rgb_led_hue, 100, 50);
          rgb_led_hue += 120;
          if(rgb_led_hue >= 360){
            rgb_led_hue = 0;
          }
          mico_thread_msleep(300);
        }
        hsb2rgb_led_open(0, 0, 0);
        break;
      }
    case 3: // infrared sensor
      {
        while(kNoErr != mico_rtos_get_semaphore(&mfg_test_state_change_sem, 0))
        {
          infrared_ret = infrared_reflective_read(&infrared_reflective_data);
          if(0 == infrared_ret){ 
            sprintf(str, "%s Infrared\r\nInfrared: %d", OLED_MFG_TEST_PREFIX,
                    infrared_reflective_data);
            mf_printf(str);
          }
          mico_thread_msleep(300);
        }
        break;
      }
    case 4: // DC Motor
      {
        sprintf(str, "%s DC Motor\r\nRun:\r\n     on : 500ms\r\n     off: 500ms", OLED_MFG_TEST_PREFIX);
        mf_printf(str);
        
        while(kNoErr != mico_rtos_get_semaphore(&mfg_test_state_change_sem, 0))
        {
          dc_motor_set(1);
          mico_thread_msleep(500);
          dc_motor_set(0);
          mico_thread_msleep(500);
        }
        dc_motor_set(0);
        break;
      }
    case 5: // BME280
      {
        while(kNoErr != mico_rtos_get_semaphore(&mfg_test_state_change_sem, 0))
        {
          err = bme280_sensor_init();
          if(kNoErr != err){
            sprintf(str, "%s BME280\r\nMoule not found!", OLED_MFG_TEST_PREFIX);
            mf_printf(str);
            // goto next mdoule
            mico_thread_msleep(500);
            mfg_test_module_number = (mfg_test_module_number+1)%(MFG_TEST_MAX_MODULE_NUM+1);
            break;
          }
          else{
            err = bme280_data_readout(&bme280_temp, &bme280_press, &bme280_hum);
            if(kNoErr == err){
              sprintf(str, "%s BME280\r\nT: %3.1fC\r\nH: %3.1f%%\r\nP: %5.2fkPa", OLED_MFG_TEST_PREFIX,
                      (float)bme280_temp/100, (float)bme280_hum/1024, (float)bme280_press/1000);
              mf_printf(str);
            }
            else{
              sprintf(str, "%s BME280\r\nRead error!", OLED_MFG_TEST_PREFIX);
              mf_printf(str);
            }
          }
          mico_thread_msleep(500);
        }
        break;
      }
    case 6: // DHT11
      {
        while(kNoErr != mico_rtos_get_semaphore(&mfg_test_state_change_sem, 0))
        {
          dht11_ret = DHT11_Read_Data(&dht11_temp_data, &dht11_hum_data);
          if(0 == dht11_ret){
            sprintf(str, "%s DHT11\r\nT: %3.1fC\r\nH: %3.1f%%", OLED_MFG_TEST_PREFIX,
                    (float)dht11_temp_data, (float)dht11_hum_data);
            mf_printf(str);
          }
          mico_thread_sleep(1);   // DHT11 must >= 1s
        }
        break;
      }
    case 7:   // Light sensor
      {
        while(kNoErr != mico_rtos_get_semaphore(&mfg_test_state_change_sem, 0))
        {
          light_ret = light_sensor_read(&light_sensor_data);
          if(0 == light_ret){
            sprintf(str, "%s Light\r\nLight: %d", OLED_MFG_TEST_PREFIX,
                    light_sensor_data);
            mf_printf(str);
          }
          mico_thread_msleep(300);
        }
        break;
      }
    case 8: // wifi
      {
        wlan_get_mac_address(mac);
        sprintf(str, "%s Wi-Fi\r\nMAC:\r\n    %02X%02X%02X%02X%02X%02X", OLED_MFG_TEST_PREFIX,
                mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
        mf_printf(str);
        //mico_thread_msleep(500);
        
        scanap_done = false;
        micoWlanStartScan();
        while((!scanap_done) || (kNoErr != mico_rtos_get_semaphore(&mfg_test_state_change_sem, MICO_WAIT_FOREVER)));
        break;
      }
    default:
      goto exit;  // error
      break;
    }
  }
  
exit:
  mico_thread_sleep(MICO_NEVER_TIMEOUT);
}
Example #9
0
/* mxchip library manufacture test. */
void mxchip_mfg_test(void)
{
  char str[128];
  char mac[6];
  char *ssid;
  mico_uart_config_t uart_config;
  volatile ring_buffer_t  rx_buffer;
  volatile uint8_t *      rx_data;
  mico_debug_enabled = 0;
  
  rx_data = malloc(50);
  require(rx_data, exit);
  
  /* Initialize UART interface */
  uart_config.baud_rate    = 115200;
  uart_config.data_width   = DATA_WIDTH_8BIT;
  uart_config.parity       = NO_PARITY;
  uart_config.stop_bits    = STOP_BITS_1;
  uart_config.flow_control = FLOW_CONTROL_DISABLED;
  uart_config.flags = UART_WAKEUP_DISABLE;

  ring_buffer_init ((ring_buffer_t *)&rx_buffer, (uint8_t *)rx_data, 50);
  MicoUartInitialize (MFG_TEST, &uart_config, (ring_buffer_t *)&rx_buffer);

  mf_printf ("==== MXCHIP Manufacture Test ====\r\n");
  mf_printf ("Serial Number: ");
  mf_printf (SERIAL_NUMBER);
  mf_printf ("\r\n");

  mf_printf ("App CRC: ");
  memset (str, 0, sizeof (str));
  app_crc (str, sizeof (str));
  mf_printf (str);
  mf_printf ("\r\n");

  mf_printf ("Bootloader Version: ");
  mf_printf (mico_get_bootloader_ver());
  mf_printf ("\r\n");
  sprintf (str, "Library Version: %s\r\n", system_lib_version());
  mf_printf (str);
  mf_printf ("APP Version: ");
  memset (str, 0, sizeof (str));
  system_version (str, sizeof (str));
  mf_printf (str);
  mf_printf ("\r\n");
  memset (str, 0, sizeof (str));
  wlan_driver_version (str, sizeof (str));
  mf_printf ("Driver: ");
  mf_printf (str);
  mf_printf ("\r\n");

#ifdef MICO_BLUETOOTH_ENABLE
  /* Initialise MICO SmartBridge */
  mico_bt_init( MICO_BT_HCI_MODE, "SmartBridge Device", 0, 0 );  //Client + server connections
  mico_bt_smartbridge_init( 0 );
  mico_bt_dev_read_local_addr( (uint8_t *)mac );
  sprintf( str, "Local Bluetooth Address: %02X-%02X-%02X-%02X-%02X-%02X\r\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5] );
  mf_printf (str);
  ble_scan();
#endif

  wlan_get_mac_address (mac);
  sprintf (str, "MAC: %02X-%02X-%02X-%02X-%02X-%02X\r\n",
          mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
  mf_printf(str);
  mfg_scan();

  if (test_for_app==0) {
  ssid = ssid_get();
    mfg_connect (ssid);
  }

exit:
  mico_thread_sleep(MICO_NEVER_TIMEOUT);
}