uint16_t mode_get(void) { uint16_t mode; uint8_t get_str; //rt_kprintf("----------------------mode---------------------\n"); drv_fls_read(PARAM_MODE_ADDR,(uint8_t*)&mode,sizeof(uint16_t)); if(mode == CUSTOM_MODE){ get_str = 0; } else if(mode == HIGHWAY_MODE){ get_str = 1; } else if(mode == MOUNTAIN_MODE){ get_str = 2; } else if(mode == CITY_MODE){ get_str = 3; } else{ OSAL_MODULE_DBGPRT(MODULE_NAME,OSAL_DEBUG_INFO,"mode reading error!!\n"); } OSAL_MODULE_DBGPRT(MODULE_NAME,OSAL_DEBUG_INFO,"mode value = %04X,mode is %s\n", mode,mode_string[get_str]); return mode; }
void print_fd(uint32_t addr)//print data of specified address ,e.g:print_fd(0x80E0010), { uint8_t data; drv_fls_read(addr,&data,1); rt_kprintf("data in address %x is \"%d\"\n",addr,data); }
void print_init_word(void)//print flag of initialized { uint8_t init_word[sizeof(param_init_words)]; drv_fls_read(PARAM_FLAG_ADDR,init_word,sizeof(param_init_words)); rt_kprintf("init word in flash is \"%s\"\n",init_word); }
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 param_init(void) { uint8_t magic_word[sizeof(param_init_words)]; drv_fls_read(PARAM_FLAG_ADDR,magic_word,sizeof(param_init_words)); param_mode = mode_get(); //drv_fls_read(PARAM_MODE_ADDR,(uint8_t*)¶m_mode,sizeof(uint16_t)); if(strcmp((const char*)param_init_words,(const char*)magic_word) != 0){ osal_printf("loading default param,mode is custom\n"); load_default_param_custom(&cms_param); write_def_param(); } else{ load_param_from_fl(); } }
void load_param_from_fl(void) { uint32_t param_addr; p_cms_param = &cms_param; if(param_mode == CUSTOM_MODE){ param_addr = PARAM_ADDR_CUSTOM; } else if(param_mode == HIGHWAY_MODE){ param_addr = PARAM_ADDR_HIGHWAY; } else if(param_mode == MOUNTAIN_MODE){ param_addr = PARAM_ADDR_MOUNTAIN; } else if(param_mode == CITY_MODE){ param_addr = PARAM_ADDR_CITY; } drv_fls_read(param_addr,(uint8_t *)p_cms_param,sizeof(cfg_param_t)); }
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; }
uint8_t flash_read(uint8_t mode) { cfg_param_t *param_temp; uint32_t param_addr; if(mode == 1){ param_addr = PARAM_ADDR_CUSTOM; } else if(mode == 2){ param_addr = PARAM_ADDR_HIGHWAY; } else if(mode == 3){ param_addr = PARAM_ADDR_MOUNTAIN; } else if(mode == 4){ param_addr = PARAM_ADDR_CITY; } else{ osal_printf("parameter error!\n"); return 0; } param_temp = (cfg_param_t*)rt_malloc(sizeof(cfg_param_t)); drv_fls_read(param_addr,(uint8_t *)param_temp,sizeof(cfg_param_t)); rt_kprintf("-------------------parameters in flash------------------\n"); rt_kprintf("----------------------vam---------------------\n"); rt_kprintf("ID(0)=%d%d%d%d\n",param_temp->pid[0],param_temp->pid[1],param_temp->pid[2],param_temp->pid[3]); rt_kprintf("vam.bsm_hops(1)=%d\n", param_temp->vam.bsm_hops); rt_kprintf("vam.bsm_boardcast_mode(2)=%d\n", param_temp->vam.bsm_boardcast_mode); rt_kprintf("vam.bsm_boardcast_saftyfactor(3)=%d\n", param_temp->vam.bsm_boardcast_saftyfactor); rt_kprintf("vam.bsm_pause_mode(4)=%d\n", param_temp->vam.bsm_pause_mode); rt_kprintf("vam.bsm_pause_hold_time(5)=%d (s)\n", param_temp->vam.bsm_pause_hold_time); rt_kprintf("vam.bsm_boardcast_period(6)=%d (ms)\n", param_temp->vam.bsm_boardcast_period); rt_kprintf("vam.evam_hops(7)=%d\n", param_temp->vam.evam_hops); rt_kprintf("vam.evam_broadcast_type(8)=%d\n", param_temp->vam.evam_broadcast_type); rt_kprintf("vam.evam_broadcast_peroid(9)=%d (ms)\n\n", param_temp->vam.evam_broadcast_peroid); rt_kprintf("----------------------vsa---------------------\n"); rt_kprintf("vsa.danger_detect_speed_threshold(10)=%d (km/h)\n", param_temp->vsa.danger_detect_speed_threshold); rt_kprintf("vsa.lane_dis(11)=%d (m)\n", param_temp->vsa.lane_dis); rt_kprintf("vsa.crd_saftyfactor(12)=%d\n", param_temp->vsa.crd_saftyfactor); rt_kprintf("vsa.crd_oppsite_speed(13)=%d (km/h)\n", param_temp->vsa.crd_oppsite_speed); rt_kprintf("vsa.crd_oppsite_rear_speed(14)=%d (km/h)\n", param_temp->vsa.crd_oppsite_rear_speed); rt_kprintf("vsa.crd_rear_distance(15)=%d (m)\n", param_temp->vsa.crd_rear_distance); rt_kprintf("vsa.ebd_mode(16)=%d\n", param_temp->vsa.ebd_mode); rt_kprintf("vsa.ebd_acceleration_threshold(17)=%d (m/s2)\n", param_temp->vsa.ebd_acceleration_threshold); rt_kprintf("vsa.ebd_alert_hold_time(18)=%d (s)\n\n", param_temp->vsa.ebd_alert_hold_time); rt_kprintf("----------------------gsnr---------------------\n"); rt_kprintf("gsnr.gsnr_cal_step(19)=%d\n",param_temp->gsnr.gsnr_cal_step); rt_kprintf("gsnr.gsnr_cal_thr(20)=%d\n",param_temp->gsnr.gsnr_cal_thr); rt_kprintf("gsnr.gsnr_ebd_thr(21)=%d\n",param_temp->gsnr.gsnr_ebd_thr); rt_kprintf("gsnr.gsnr_ebd_cnt(22)=%d\n",param_temp->gsnr.gsnr_ebd_cnt); rt_kprintf("gsnr.AcceV_x(23)=%d\n",param_temp->gsnr.AcceV_x); rt_kprintf("gsnr.AcceV_y(24)=%d\n",param_temp->gsnr.AcceV_y); rt_kprintf("gsnr.AcceV_z(25)=%d\n",param_temp->gsnr.AcceV_z); rt_kprintf("gsnr.AcceAhead_x(26)=%d\n",param_temp->gsnr.AcceAhead_x); rt_kprintf("gsnr.AcceAhead_y(27)=%d\n",param_temp->gsnr.AcceAhead_y); rt_kprintf("gsnr.AcceAhead_z(28)=%d\n",param_temp->gsnr.AcceAhead_z); rt_kprintf("----------------------wnet---------------------\n"); rt_kprintf("wnet.channel(29)=%d\n",param_temp->wnet.channel); rt_kprintf("wnet.txrate(30)=%d\n",param_temp->wnet.txrate); rt_kprintf("----------------------voc---------------------\n"); rt_kprintf("voc.fg_volume(32)=%d\n",param_temp->voc.fg_volume); rt_kprintf("voc.bg_volume(33)=%d\n",param_temp->voc.bg_volume); rt_kprintf("voc.speed(34)=%d\n",param_temp->voc.speed); rt_kprintf("...\n"); rt_kprintf("----------------------end---------------------\n"); rt_free(param_temp); param_temp = 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; }