void init_platform( void ) { button_init_t init; MicoGpioInitialize( (mico_gpio_t)MICO_SYS_LED, OUTPUT_PUSH_PULL ); MicoGpioOutputLow( (mico_gpio_t)MICO_SYS_LED ); MicoGpioInitialize( (mico_gpio_t)MICO_RF_LED, OUTPUT_OPEN_DRAIN_NO_PULL ); MicoGpioOutputHigh( (mico_gpio_t)MICO_RF_LED ); MicoGpioInitialize((mico_gpio_t)BOOT_SEL, INPUT_PULL_UP); MicoGpioInitialize((mico_gpio_t)MFG_SEL, INPUT_PULL_UP); init.gpio = EasyLink_BUTTON; init.pressed_func = PlatformEasyLinkButtonClickedCallback; init.long_pressed_func = PlatformEasyLinkButtonLongPressedCallback; init.long_pressed_timeout = 5000; button_init( IOBUTTON_EASYLINK, init ); #ifdef USE_MiCOKit_EXT dc_motor_init( ); dc_motor_set( 0 ); rgb_led_init(); rgb_led_open(0, 0, 0); #endif }
void init_platform( void ) { MicoGpioInitialize( (mico_gpio_t)MICO_SYS_LED, OUTPUT_PUSH_PULL ); MicoGpioOutputLow( (mico_gpio_t)MICO_SYS_LED ); MicoGpioInitialize( (mico_gpio_t)MICO_RF_LED, OUTPUT_OPEN_DRAIN_NO_PULL ); MicoGpioOutputHigh( (mico_gpio_t)MICO_RF_LED ); // MicoGpioInitialize((mico_gpio_t)BOOT_SEL, INPUT_PULL_UP); //MicoGpioInitialize((mico_gpio_t)MFG_SEL, INPUT_PULL_UP); // Initialise EasyLink buttons MicoGpioInitialize( (mico_gpio_t)EasyLink_BUTTON, INPUT_PULL_UP ); mico_init_timer(&_button_EL_timer, RestoreDefault_TimeOut, _button_EL_Timeout_handler, NULL); MicoGpioEnableIRQ( (mico_gpio_t)EasyLink_BUTTON, IRQ_TRIGGER_BOTH_EDGES, _button_EL_irq_handler, NULL ); //MicoFlashInitialize( MICO_SPI_FLASH ); #ifdef USE_MiCOKit_EXT dc_motor_init( ); dc_motor_set( 0 ); rgb_led_init(); rgb_led_open(0, 0, 0); #endif }
void hsb_led_open(float hues, float saturation, float brightness) { float color[3]; H2R_HSBtoRGB(hues, saturation, brightness, color); hsb2rgb_led_log("OpenLED_RGB: red=%d, green=%d, blue=%d.", (uint8_t)(color[0]), (uint8_t)(color[1]), (uint8_t)(color[2])); rgb_led_init( ); rgb_led_open( (uint8_t)(color[0]), (uint8_t)(color[1]), (uint8_t)(color[2]) ); }
// call RGB LED driver to control LED static void OpenLED_RGB(float *color) { uint8_t blue = (uint8_t)(color[2]); uint8_t green = (uint8_t)(color[1]); uint8_t red = (uint8_t)(color[0]); //hsb2rgb_led_log("OpenLED_RGB: color[0]=%f, color[1]=%f, color[2]=%f.", color[0], color[1], color[2]); hsb2rgb_led_log("OpenLED_RGB: red=%d, green=%d, blue=%d.", red, green, blue); rgb_led_init(); rgb_led_open(red, green, blue); }
void rgb_led_P9813_deinit(void) { #ifdef USE_RGB_LED_DRIVER_P9813 rgb_led_init(); rgb_led_open(0, 0, 0); #elif USE_RGB_LED_DRIVER_PWM rgb_led_log("Unimplemented"); #else #error LED driver function is not defined in platform.h #endif }
void init_platform_bootloader( void ) { MicoGpioInitialize( (mico_gpio_t)MICO_SYS_LED, OUTPUT_PUSH_PULL ); MicoGpioOutputLow( (mico_gpio_t)MICO_SYS_LED ); MicoGpioInitialize( (mico_gpio_t)MICO_RF_LED, OUTPUT_OPEN_DRAIN_NO_PULL ); MicoGpioOutputHigh( (mico_gpio_t)MICO_RF_LED ); MicoGpioInitialize((mico_gpio_t)BOOT_SEL, INPUT_PULL_UP); MicoGpioInitialize((mico_gpio_t)MFG_SEL, INPUT_HIGH_IMPEDANCE); #ifdef USE_MiCOKit_EXT dc_motor_init( ); dc_motor_set( 0 ); rgb_led_init(); rgb_led_open(0, 0, 0); #endif }
//------------------------------------- API ------------------------------------ OSStatus user_modules_init(void) { OSStatus err = kUnknownErr; char oled_show_line[16] = {'\0'}; // max char each line // init DC Motor(GPIO) dc_motor_init(); dc_motor_set(0); // off // init RGB LED(P9813) rgb_led_init(); rgb_led_open(0, 0, 0); // off // init OLED OLED_Init(); OLED_Clear(); snprintf(oled_show_line, 16, "%s", (uint8_t*)DEV_KIT_MANUFACTURER); OLED_ShowString(0,0,(uint8_t*)oled_show_line); memset(oled_show_line, '\0', 16); snprintf(oled_show_line, 16, "%s", (uint8_t*)DEV_KIT_NAME); OLED_ShowString(0,3,(uint8_t*)oled_show_line); OLED_ShowString(0,6,"Starting... "); // init Light sensor(ADC) light_sensor_init(); // init infrared sensor(ADC) infrared_reflective_init(); // init user key1 && key2 user_key1_init(); user_key2_init(); err = temp_hum_sensor_init(); return err; }
void hsb2rgb_led_init(void) { rgb_led_init(); }
static void CloseLED_RGB() { rgb_led_init(); rgb_led_close(); }
void rgb_led_close(void) { rgb_led_init(); rgb_led_open(0, 0, 0); }
void init_platform_bootloader( void ) { CRC8_Context crc; OSStatus err = kNoErr; mico_logic_partition_t *rf_partition = MicoFlashGetInfo( MICO_PARTITION_RF_FIRMWARE ); MicoGpioInitialize( (mico_gpio_t)MICO_SYS_LED, OUTPUT_PUSH_PULL ); MicoGpioOutputLow( (mico_gpio_t)MICO_SYS_LED ); MicoGpioInitialize( (mico_gpio_t)MICO_RF_LED, OUTPUT_OPEN_DRAIN_NO_PULL ); MicoGpioOutputHigh( (mico_gpio_t)MICO_RF_LED ); MicoGpioInitialize((mico_gpio_t)BOOT_SEL, INPUT_PULL_UP); MicoGpioInitialize((mico_gpio_t)MFG_SEL, INPUT_PULL_UP); #ifdef USE_MiCOKit_EXT dc_motor_init( ); dc_motor_set( 0 ); rgb_led_init(); rgb_led_open(0, 0, 0); #endif /* Specific operations used in EMW3165 production */ #define NEED_RF_DRIVER_COPY_BASE ((uint32_t)0x08008000) #define TEMP_RF_DRIVER_BASE ((uint32_t)0x08040000) #define TEMP_RF_DRIVER_END ((uint32_t)0x0807FFFF) const uint8_t isDriverNeedCopy = *(uint8_t *)(NEED_RF_DRIVER_COPY_BASE); const uint32_t totalLength = rf_partition->partition_length; const uint8_t crcResult = *(uint8_t *)(TEMP_RF_DRIVER_END); uint8_t targetCrcResult = 0; uint32_t copyLength; uint32_t destStartAddress_tmp = rf_partition->partition_start_addr; uint32_t sourceStartAddress_tmp = TEMP_RF_DRIVER_BASE; uint32_t i; if ( isDriverNeedCopy != 0x0 ) return; platform_log( "Bootloader start to copy RF driver..." ); /* Copy RF driver to SPI flash */ err = platform_flash_init( &platform_flash_peripherals[ MICO_FLASH_SPI ] ); require_noerr(err, exit); err = platform_flash_init( &platform_flash_peripherals[ MICO_FLASH_EMBEDDED ] ); require_noerr(err, exit); err = platform_flash_erase( &platform_flash_peripherals[ MICO_FLASH_SPI ], rf_partition->partition_start_addr, rf_partition->partition_start_addr + rf_partition->partition_length - 1 ); require_noerr(err, exit); platform_log( "Time: %d", mico_get_time_no_os() ); for(i = 0; i <= totalLength/SizePerRW; i++){ if( i == totalLength/SizePerRW ){ if(totalLength%SizePerRW) copyLength = totalLength%SizePerRW; else break; }else{ copyLength = SizePerRW; } printf("."); err = platform_flash_read( &platform_flash_peripherals[ MICO_FLASH_EMBEDDED ], &sourceStartAddress_tmp, data , copyLength ); require_noerr( err, exit ); err = platform_flash_write( &platform_flash_peripherals[ MICO_FLASH_SPI ], &destStartAddress_tmp, data, copyLength ); require_noerr(err, exit); } printf("\r\n"); /* Check CRC-8 check-sum */ platform_log( "Bootloader start to verify RF driver..." ); sourceStartAddress_tmp = TEMP_RF_DRIVER_BASE; destStartAddress_tmp = rf_partition->partition_start_addr; CRC8_Init( &crc ); for(i = 0; i <= totalLength/SizePerRW; i++){ if( i == totalLength/SizePerRW ){ if(totalLength%SizePerRW) copyLength = totalLength%SizePerRW; else break; }else{ copyLength = SizePerRW; } printf("."); err = platform_flash_read( &platform_flash_peripherals[ MICO_FLASH_SPI ], &destStartAddress_tmp, data, copyLength ); require_noerr( err, exit ); CRC8_Update( &crc, data, copyLength); } CRC8_Final( &crc, &targetCrcResult ); printf("\r\n"); //require_string( crcResult == targetCrcResult, exit, "Check-sum error" ); if( crcResult != targetCrcResult ){ platform_log("Check-sum error"); while(1); } /* Clear RF driver from temperary storage */ platform_log("Bootloader start to clear RF driver temporary storage..."); /* Clear copy tag */ err = platform_flash_erase( &platform_flash_peripherals[ MICO_FLASH_EMBEDDED ], NEED_RF_DRIVER_COPY_BASE, NEED_RF_DRIVER_COPY_BASE); require_noerr(err, exit); exit: return; }
//------------------------------------- API ------------------------------------ OSStatus micokit_STmems_init(void) { OSStatus err = kUnknownErr; #if defined(MICOKIT_STMEMS_KEY1)||defined(MICOKIT_STMEMS_KEY2) button_init_t init; #endif //init RGB LED(P9813) rgb_led_init(); rgb_led_close(); // off dc_motor_init(); dc_motor_set(0); // off // init OLED OLED_Init(); OLED_ShowString(OLED_DISPLAY_COLUMN_START, OLED_DISPLAY_ROW_1, (uint8_t*)MODEL); OLED_ShowString(OLED_DISPLAY_COLUMN_START, OLED_DISPLAY_ROW_2, (uint8_t*)"MiCO "); OLED_ShowString(OLED_DISPLAY_COLUMN_START, OLED_DISPLAY_ROW_3, (uint8_t*)" Starting... "); OLED_ShowString(OLED_DISPLAY_COLUMN_START, OLED_DISPLAY_ROW_4, (uint8_t*)" "); #ifdef MICOKIT_STMEMS_KEY1 init.gpio = MICOKIT_STMEMS_KEY1; init.pressed_func = micokit_STmems_key1_clicked_callback; init.long_pressed_func = NULL; init.long_pressed_timeout = 5000; button_init( IOBUTTON_USER_1, init); #endif #ifdef MICOKIT_STMEMS_KEY2 init.gpio = MICOKIT_STMEMS_KEY2; init.pressed_func = micokit_STmems_key2_clicked_callback; init.long_pressed_func = NULL; init.long_pressed_timeout = 5000; button_init( IOBUTTON_USER_2, init); #endif /*init HTS221 */ err = hts221_sensor_init(); require_noerr_string( err, exit, "ERROR: Unable to Init HTS221" ); /*init UVIS25 */ err = uvis25_sensor_init(); require_noerr_string( err, exit, "ERROR: Unable to Init UVIS25" ); /*init LSM9DS1_ACC_GYR */ err = lsm9ds1_acc_gyr_sensor_init(); require_noerr_string( err, exit, "ERROR: Unable to Init LSM9DS1_ACC_GYR" ); err = lsm9ds1_mag_sensor_init(); require_noerr_string( err, exit, "ERROR: Unable to Init LSM9DS1_MAG" ); /*init LPS25HB */ err = lps25hb_sensor_init(); require_noerr_string( err, exit, "ERROR: Unable to Init LPS25HB" ); light_sensor_init(); exit: return err; }
void test_jsonc() { /*control info*/ bool rgb_sw = false; int rgb_hue = 0; int rgb_sat = 0; int rgb_bri = 0; /*1:construct json object*/ struct json_object *recv_json_object=NULL; recv_json_object=json_object_new_object(); struct json_object *device_object=NULL; device_object=json_object_new_object(); json_object_object_add(device_object, "Hardware", json_object_new_string("MiCOKit3288")); json_object_object_add(device_object, "RGBSwitch", json_object_new_boolean(false)); json_object_object_add(device_object, "RGBHues", json_object_new_int(0)); json_object_object_add(device_object, "RGBSaturation", json_object_new_int(100)); json_object_object_add(device_object, "RGBBrightness", json_object_new_int(100)); json_object_object_add(recv_json_object,"device_info",device_object);/*one pair K-V*/ os_json_log("%s",json_object_to_json_string(recv_json_object)); /*recv_json_object*/ /* {"device_info": { "Hardware": "MiCOKit3288", "RGBSwitch": false, "RGBHues": 0, "RGBSaturation": 100, "RGBBrightness": 100 } } */ /*2:parse json object*/ json_object* parse_json_object=json_object_object_get(recv_json_object,"device_info"); /*get data one by one*/ json_object_object_foreach(parse_json_object, key, val) { if(!strcmp(key, "RGBSwitch")){ rgb_sw = json_object_get_boolean(val); os_json_log("rgb_sw=%d",rgb_sw); } else if(!strcmp(key, "RGBHues")){ rgb_hue = json_object_get_int(val); os_json_log("rgb_hue=%d",rgb_hue); } else if(!strcmp(key, "RGBSaturation")){ rgb_sat = json_object_get_int(val); os_json_log("rgb_sat=%d",rgb_sat); } else if(!strcmp(key, "RGBBrightness")){ rgb_bri = json_object_get_int(val); os_json_log("rgb_bri=%d",rgb_bri); } } /*3:parse finished,free memory*/ json_object_put(recv_json_object);/*free memory*/ recv_json_object=NULL; /*4:operate rgb*/ os_json_log("control rgb led now"); rgb_led_init(); hsb2rgb_led_open(rgb_hue, rgb_sat, rgb_bri);/*turn red*/ }