int erase_sector4(void) { int err = 0; err = drv_fls_erase(FLASH_Sector_4); drv_fls_write(0x8010000,param_init_words,sizeof(param_init_words)); drv_fls_write(0x8010010,param_init_words,sizeof(param_init_words)); drv_fls_write(0x8010020,param_init_words,sizeof(param_init_words)); drv_fls_write(0x8010220,param_init_words,sizeof(param_init_words)); drv_fls_write(0x8010420,param_init_words,sizeof(param_init_words)); err = drv_fls_write(0x8010620,param_init_words,sizeof(param_init_words)); return err; }
void mode_set(uint16_t mode) { cfg_param_t all_param[4]; param_mode = mode; drv_fls_read(PARAM_ADDR_CUSTOM,(uint8_t*)&all_param[0],sizeof(cfg_param_t)); drv_fls_read(PARAM_ADDR_HIGHWAY,(uint8_t*)&all_param[1],sizeof(cfg_param_t)); drv_fls_read(PARAM_ADDR_MOUNTAIN,(uint8_t*)&all_param[2],sizeof(cfg_param_t)); drv_fls_read(PARAM_ADDR_CITY,(uint8_t*)&all_param[3],sizeof(cfg_param_t)); drv_fls_erase(PARAM_SECTOR); drv_fls_write(PARAM_FLAG_ADDR,param_init_words,sizeof(param_init_words)); drv_fls_write(PARAM_MODE_ADDR,(uint8_t *)¶m_mode,sizeof(uint16_t)); drv_fls_write(PARAM_ADDR_CUSTOM,(uint8_t*)&all_param[0],sizeof(cfg_param_t)); drv_fls_write(PARAM_ADDR_HIGHWAY,(uint8_t*)&all_param[1],sizeof(cfg_param_t)); drv_fls_write(PARAM_ADDR_MOUNTAIN,(uint8_t*)&all_param[2],sizeof(cfg_param_t)); drv_fls_write(PARAM_ADDR_CITY,(uint8_t*)&all_param[3],sizeof(cfg_param_t)); osal_printf("mode = %d write in flash\n", param_mode); }
void write_def_param(void) { cfg_param_t flash_param; param_mode = CUSTOM_MODE; drv_fls_erase(PARAM_SECTOR); drv_fls_write(PARAM_FLAG_ADDR,param_init_words,sizeof(param_init_words)); drv_fls_write(PARAM_MODE_ADDR,(uint8_t *)¶m_mode,sizeof(uint16_t)); load_default_param_custom(&flash_param); drv_fls_write(PARAM_ADDR_CUSTOM,(uint8_t *)&flash_param,sizeof(cfg_param_t)); memset(&flash_param,0,sizeof(cfg_param_t)); load_default_param_highway(&flash_param); drv_fls_write(PARAM_ADDR_HIGHWAY,(uint8_t *)&flash_param,sizeof(cfg_param_t)); memset(&flash_param,0,sizeof(cfg_param_t)); load_default_param_mountain(&flash_param); drv_fls_write(PARAM_ADDR_MOUNTAIN,(uint8_t *)&flash_param,sizeof(cfg_param_t)); memset(&flash_param,0,sizeof(cfg_param_t)); load_default_param_city(&flash_param); drv_fls_write(PARAM_ADDR_CITY,(uint8_t *)&flash_param,sizeof(cfg_param_t)); /* if(-1 == err) rt_kprintf("error happened when writing default param to flash"); else rt_kprintf("write default param to flash success\n"); */ }
int8_t gsnr_param_set(uint8_t gsnr_cal_step,int32_t AcceV_x,int32_t AcceV_y,int32_t AcceV_z,int32_t AcceAhead_x,int32_t AcceAhead_y,int32_t AcceAhead_z) { int err; cfg_param_t *cfg_param; uint16_t mode; uint8_t param_num; cfg_param_t all_param[4]; drv_fls_read(PARAM_ADDR_CUSTOM,(uint8_t*)&all_param[0],sizeof(cfg_param_t)); drv_fls_read(PARAM_ADDR_HIGHWAY,(uint8_t*)&all_param[1],sizeof(cfg_param_t)); drv_fls_read(PARAM_ADDR_MOUNTAIN,(uint8_t*)&all_param[2],sizeof(cfg_param_t)); drv_fls_read(PARAM_ADDR_CITY,(uint8_t*)&all_param[3],sizeof(cfg_param_t)); drv_fls_read(PARAM_MODE_ADDR,(uint8_t *)&mode,sizeof(uint16_t)); param_num = get_param_num(mode); osal_printf("mode is %04X\n",mode); cfg_param = &all_param[param_num]; cfg_param->gsnr.gsnr_cal_step = gsnr_cal_step; cfg_param->gsnr.AcceV_x = AcceV_x; cfg_param->gsnr.AcceV_y = AcceV_y; cfg_param->gsnr.AcceV_z = AcceV_z; cfg_param->gsnr.AcceAhead_x = AcceAhead_x; cfg_param->gsnr.AcceAhead_y = AcceAhead_y; cfg_param->gsnr.AcceAhead_z = AcceAhead_z; memcpy((uint8_t*)&cms_param,(uint8_t*)cfg_param,sizeof(cfg_param_t)); rt_kprintf("gsnr is setting .....please don't power off!\n"); drv_fls_erase(PARAM_SECTOR); drv_fls_write(PARAM_FLAG_ADDR,param_init_words,sizeof(param_init_words)); drv_fls_write(PARAM_MODE_ADDR,(uint8_t *)&mode,sizeof(uint16_t)); drv_fls_write(PARAM_ADDR_CUSTOM,(uint8_t*)&all_param[0],sizeof(cfg_param_t)); drv_fls_write(PARAM_ADDR_HIGHWAY,(uint8_t*)&all_param[1],sizeof(cfg_param_t)); drv_fls_write(PARAM_ADDR_MOUNTAIN,(uint8_t*)&all_param[2],sizeof(cfg_param_t)); err = drv_fls_write(PARAM_ADDR_CITY,(uint8_t*)&all_param[3],sizeof(cfg_param_t)); if(err == -1) rt_kprintf("gsnr param setting failed!!!\n"); else rt_kprintf("gsnr param setting success!\n"); cfg_param = NULL; return 0; }
int param_set(uint8_t param, int32_t value) { int err; cfg_param_t *cfg_param; uint16_t mode; uint8_t param_num; cfg_param_t all_param[4]; drv_fls_read(PARAM_ADDR_CUSTOM,(uint8_t*)&all_param[0],sizeof(cfg_param_t)); drv_fls_read(PARAM_ADDR_HIGHWAY,(uint8_t*)&all_param[1],sizeof(cfg_param_t)); drv_fls_read(PARAM_ADDR_MOUNTAIN,(uint8_t*)&all_param[2],sizeof(cfg_param_t)); drv_fls_read(PARAM_ADDR_CITY,(uint8_t*)&all_param[3],sizeof(cfg_param_t)); drv_fls_read(PARAM_MODE_ADDR,(uint8_t *)&mode,sizeof(uint16_t)); param_num = get_param_num(mode); osal_printf("mode is %04X\n",mode); cfg_param = &all_param[param_num]; if(param == 29){ if((value < 1)&&(value > 13)){ rt_kprintf("wrong channel!\n\n"); return -1; } } if(param == 30){ if((value != 1)&&(value != 2)&&(value != 6)){ rt_kprintf("param of Txrate is just 1,2,6\n\n"); return -1; } } switch(param){ case 0: if(value > 9999){ rt_kprintf("invalid ID!!\n"); return -1; } cfg_param->pid[0] = value/1000; cfg_param->pid[1] = (value%1000)/100; cfg_param->pid[2] = ((value%1000)%100)/10; cfg_param->pid[3] = ((value%1000)%100)%10; break; case 1: cfg_param->vam.bsm_hops = value; break; case 2: cfg_param->vam.bsm_boardcast_mode = value; break; case 3: cfg_param->vam.bsm_boardcast_saftyfactor = value; break; case 4: cfg_param->vam.bsm_pause_mode = value; break; case 5: cfg_param->vam.bsm_pause_hold_time = value; break; case 6: cfg_param->vam.bsm_boardcast_period = value; break; case 7: cfg_param->vam.evam_hops = value; break; case 8: cfg_param->vam.evam_broadcast_type = value; break; case 9: cfg_param->vam.evam_broadcast_peroid = value; break; case 10: cfg_param->vsa.danger_detect_speed_threshold = value; break; case 11: cfg_param->vsa.lane_dis = value; break; case 12: cfg_param->vsa.crd_saftyfactor = value; break; case 13: cfg_param->vsa.crd_oppsite_speed = value; break; case 14: cfg_param->vsa.crd_oppsite_rear_speed = value; break; case 15: cfg_param->vsa.crd_rear_distance = value; break; case 16: cfg_param->vsa.ebd_mode = value; break; case 17: cfg_param->vsa.ebd_acceleration_threshold = value; break; case 18: cfg_param->vsa.ebd_alert_hold_time = value; break; case 19: cfg_param->gsnr.gsnr_cal_step = value; break; case 20: cfg_param->gsnr.gsnr_cal_thr = value; break; case 21: cfg_param->gsnr.gsnr_ebd_thr = value; break; case 22: cfg_param->gsnr.gsnr_ebd_cnt = value; break; case 23: cfg_param->gsnr.AcceV_x = value; break; case 24: cfg_param->gsnr.AcceV_y = value; break; case 25: cfg_param->gsnr.AcceV_z = value; break; case 26: cfg_param->gsnr.AcceAhead_x = value; break; case 27: cfg_param->gsnr.AcceAhead_y = value; break; case 28: cfg_param->gsnr.AcceAhead_z = value; break; case 29: cfg_param->wnet.channel = value; break; case 30: cfg_param->wnet.txrate = value; break; case 31: cfg_param->print_xxx = value; break; case 32: cfg_param->voc.fg_volume = value; break; case 33: cfg_param->voc.bg_volume = value; break; case 34: cfg_param->voc.speed = value; break; default: rt_kprintf("invalid parameter number!!\n"); break; } memcpy((uint8_t*)&cms_param,(uint8_t*)cfg_param,sizeof(cfg_param_t)); rt_kprintf("param is setting .....please don't power off!\n"); drv_fls_erase(PARAM_SECTOR); drv_fls_write(PARAM_FLAG_ADDR,param_init_words,sizeof(param_init_words)); drv_fls_write(PARAM_MODE_ADDR,(uint8_t *)&mode,sizeof(uint16_t)); drv_fls_write(PARAM_ADDR_CUSTOM,(uint8_t*)&all_param[0],sizeof(cfg_param_t)); drv_fls_write(PARAM_ADDR_HIGHWAY,(uint8_t*)&all_param[1],sizeof(cfg_param_t)); drv_fls_write(PARAM_ADDR_MOUNTAIN,(uint8_t*)&all_param[2],sizeof(cfg_param_t)); err = drv_fls_write(PARAM_ADDR_CITY,(uint8_t*)&all_param[3],sizeof(cfg_param_t)); if(err == -1){ rt_kprintf("parameter writing process error!!!\n"); } else{ rt_kprintf("parameter set success!\n"); } cfg_param = NULL; return 0; }