void task2(intptr_t exinf) { ER_UINT ercd; check_point(4); ercd = ploc_mtx(MTX1); check_ercd(ercd, E_TMOUT); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); check_point(10); ercd = unl_mtx(MTX1); check_ercd(ercd, E_OK); check_point(12); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); check_point(13); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(16); ercd = unl_mtx(MTX1); check_ercd(ercd, E_OK); check_point(17); ercd = ext_tsk(); check_point(0); }
void task2(intptr_t exinf) { ER_UINT ercd; PRI tskpri; check_point(14); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(24); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(50); ercd = loc_mtx(MTX2); check_ercd(ercd, E_OK); check_point(56); ercd = wup_tsk(TASK1); check_ercd(ercd, E_OK); check_point(57); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); check_point(60); ercd = unl_mtx(MTX1); check_ercd(ercd, E_OK); check_point(61); ercd = unl_mtx(MTX2); check_ercd(ercd, E_OK); check_point(62); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); check_point(63); ercd = rot_rdq(MID_PRIORITY); check_ercd(ercd, E_OK); check_point(66); ercd = unl_mtx(MTX1); check_ercd(ercd, E_OK); ercd = get_pri(TASK1, &tskpri); check_ercd(ercd, E_OK); check_assert(tskpri == MID_PRIORITY); check_point(67); ercd = ext_tsk(); check_point(0); }
void task3(intptr_t exinf) { ER_UINT ercd; check_point(16); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(29); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(52); ercd = loc_mtx(MTX4); check_ercd(ercd, E_OK); check_point(61); ercd = unl_mtx(MTX4); check_ercd(ercd, E_OK); check_point(66); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(71); ercd = loc_mtx(MTX4); check_ercd(ercd, E_OK); check_point(81); ercd = unl_mtx(MTX4); check_ercd(ercd, E_OK); check_point(86); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(91); ercd = loc_mtx(MTX1); check_ercd(ercd, E_DLT); check_point(97); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(101); ercd = loc_mtx(MTX1); check_ercd(ercd, E_DLT); check_point(105); ercd = ext_tsk(); check_point(0); }
void task3(intptr_t exinf) { ER ercd; PRI tskpri; T_RMTX rmtx; check_point(10); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); check_point(13); ercd = ref_mtx(MTX1, &rmtx); check_ercd(ercd, E_OK); check_assert(rmtx.htskid == TASK3); check_assert(rmtx.wtskid == TSK_NONE); ercd = get_pri(TPRI_SELF, &tskpri); check_ercd(ercd, E_OK); check_assert(tskpri == HIGH_PRIORITY); ercd = unl_mtx(MTX1); check_ercd(ercd, E_OK); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(27); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); check_point(30); ercd = ref_mtx(MTX1, &rmtx); check_ercd(ercd, E_OK); check_assert(rmtx.htskid == TASK3); check_assert(rmtx.wtskid == TSK_NONE); ercd = ref_mtx(MTX2, &rmtx); check_ercd(ercd, E_OK); check_assert(rmtx.htskid == TASK4); check_assert(rmtx.wtskid == TSK_NONE); ercd = get_pri(TPRI_SELF, &tskpri); check_ercd(ercd, E_OK); check_assert(tskpri == HIGH_PRIORITY); ercd = ext_tsk(); check_point(0); }
/** Lock a mutex * @param mutex the mutex to lock */ void sys_mutex_lock(sys_mutex_t *mutex) { // if (osMutexWait(mutex->id, osWaitForever) != osOK) if (loc_mtx(mutex->id) != E_OK) { syslog(LOG_EMERG, "sys_mutex_lock error"); error("sys_mutex_lock error\n"); } }
void ev3rt_console_log_putc(char c) { #if 0 ER ercd; ercd = loc_mtx(EV3RT_CONSOLE_LOG_MTX); if (ercd != E_OK) { syslog(LOG_ERROR, "%s(): ercd %d", __FUNCTION__, ercd); assert(false); return; } #endif if (c == '\r') return; // Skip '\r' if (c != '\n') { log_put_char(c); } else { for (int i = CONSOLE_LOG_VIEW_LINE_WIDTH - log_current_column; i > 0; --i) log_put_char(' '); } #if 0 if (unl_mtx(EV3RT_CONSOLE_LOG_MTX) != E_OK) { assert(false); return; } #endif }
static void ev3rt_console_set_visibility(bool_t visible) { #if 0 if (loc_mtx(EV3RT_CONSOLE_LOG_MTX) != E_OK) { assert(false); return; } #endif ER ercd; ercd = loc_cpu(); assert(ercd == E_OK); if (console_visible != visible) { // visibility changed console_visible = visible; if (console_visible) { current_button_flag = console_button_flag; log_view_refresh_ex(log_current_line); on_display_fb = ev3rt_console_fb; } else { current_button_flag = user_button_flag; on_display_fb = lcd_screen_fb; } log_view_scroll_mode = false; } ercd = unl_cpu(); assert(ercd == E_OK); #if 0 if (unl_mtx(EV3RT_CONSOLE_LOG_MTX) != E_OK) { assert(false); return; } #endif }
void task4(intptr_t exinf) { ER_UINT ercd; T_RTSK rtsk; T_RMTX rmtx; check_point(19); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); check_point(22); ercd = ref_tsk(TASK3, &rtsk); check_ercd(ercd, E_OK); check_assert(rtsk.tskstat == TTS_DMT); ercd = ref_mtx(MTX1, &rmtx); check_ercd(ercd, E_OK); check_assert(rmtx.htskid == TASK4); check_assert(rmtx.wtskid == TSK_NONE); check_point(23); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(0); }
static ER _dmloader_ins_ldm(const uint8_t *mod_data, uint32_t mod_data_sz, ID ldm_can_id) { if (ldm_can_id != 1) return E_ID; T_LDM_CAN *ldm_can = &ldm_cans[ldm_can_id - 1]; ER ercd; ercd = loc_mtx(DMLOADER_MTX); if(ercd != E_OK) { syslog(LOG_ERROR, "%s(): Acquire mutex failed.", __FUNCTION__); goto error_exit; } if (ldm_can->status != LDM_CAN_FREE) { syslog(LOG_ERROR, "%s(): LDM container is not free.", __FUNCTION__); ercd = E_OBJ; goto error_exit; } elf32_ldctx_t ctx; ctx.data_buf = ldm_can->data_mempool; ctx.data_bufsz = ldm_can->data_mempool_size; ctx.text_buf = ldm_can->text_mempool; ctx.text_bufsz = ldm_can->text_mempool_size; /** * Load ELF32 data */ ercd = elf32_load(mod_data, mod_data_sz, &ctx); if(ercd != E_OK) goto error_exit; dmloader_instruction_memory_barrier(); uint32_t mod_pil_version = *(uint32_t*)ctx.sym__module_pil_version; if (PIL_VERSION != mod_pil_version) { syslog(LOG_ERROR, "%s(): Wrong PIL version. FW PIL VER: %d, APP PIL VER: %d.", __FUNCTION__, PIL_VERSION, mod_pil_version); ercd = E_PAR; goto error_exit; } /** * Handle module configuration */ ldm_can->cfg_table = ctx.sym__module_cfg_tab; ldm_can->cfg_entry_num = *(SIZE*)ctx.sym__module_cfg_entry_num; ercd = handle_module_cfg_tab(ldm_can); if(ercd != E_OK) goto error_exit; ercd = unl_mtx(DMLOADER_MTX); assert(ercd == E_OK); ldm_can->status = LDM_CAN_RUNNING; /* Fall through */ error_exit: unl_mtx(DMLOADER_MTX); return ercd; }
void task2(intptr_t exinf) { ER_UINT ercd; T_RTSK rtsk; check_point(5); ercd = ploc_mtx(MTX1); check_ercd(ercd, E_TMOUT); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); check_point(13); ercd = ref_tsk(TASK2, &rtsk); check_ercd(ercd, E_OK); check_assert(rtsk.tskpri == HIGH_PRIORITY); check_assert(rtsk.tskbpri == MID_PRIORITY); ercd = unl_mtx(MTX1); check_ercd(ercd, E_OK); check_point(14); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); check_point(15); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(18); ercd = unl_mtx(MTX1); check_ercd(ercd, E_OK); check_point(19); ercd = ext_tsk(); check_point(0); }
void task2(intptr_t exinf) { ER_UINT ercd; check_point(42); ercd = loc_mtx(MTX4); check_ercd(ercd, E_OK); check_point(46); ercd = unl_mtx(MTX4); check_ercd(ercd, E_OK); check_point(55); ercd = wup_tsk(TASK4); check_ercd(ercd, E_OK); check_point(57); ercd = wup_tsk(TASK5); check_ercd(ercd, E_OK); check_point(67); ercd = wup_tsk(TASK5); check_ercd(ercd, E_OK); check_point(70); ercd = wup_tsk(TASK3); check_ercd(ercd, E_OK); check_point(72); ercd = wup_tsk(TASK1); check_ercd(ercd, E_OK); check_point(75); ercd = wup_tsk(TASK4); check_ercd(ercd, E_OK); check_point(77); ercd = wup_tsk(TASK5); check_ercd(ercd, E_OK); check_point(104); ercd = ini_mtx(MTX1); check_ercd(ercd, E_OK); check_point(106); ercd = ter_tsk(TASK1); check_ercd(ercd, E_OK); check_finish(107); check_point(0); }
void task3(intptr_t exinf) { ER_UINT ercd; check_point(6); ercd = unl_mtx(MTX1); check_ercd(ercd, E_OBJ); check_point(7); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); check_point(11); ercd = ext_tsk(); check_point(0); }
void task3(intptr_t exinf) { ER ercd; check_point(8); ercd = unl_mtx(MTX1); check_ercd(ercd, E_ILUSE); check_point(9); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); check_point(12); ercd = ext_tsk(); check_point(0); }
void ev3rt_console_log_scroll_up() { if (loc_mtx(EV3RT_CONSOLE_MTX) != E_OK) { assert(false); return; } if (((log_first_line + LOG_SCREEN_LINES) % LOG_MAX_LINES) >= log_current_line) { // Enough lines for scrolling? if (!log_scroll_mode) { // Enter scroll mode log_scroll_line == log_current_line - LOG_SCREEN_LINES; } } if (unl_mtx(EV3RT_CONSOLE_MTX)) { assert(false); return; } }
void task4(intptr_t exinf) { ER ercd; PRI tskpri; check_point(26); ercd = loc_mtx(MTX2); check_ercd(ercd, E_OK); check_point(31); ercd = get_pri(TPRI_SELF, &tskpri); check_ercd(ercd, E_OK); check_assert(tskpri == HIGH_PRIORITY); ercd = ext_tsk(); check_point(0); }
void task4(intptr_t exinf) { ER_UINT ercd; check_point(6); ercd = loc_mtx(MTX1); check_ercd(ercd, E_ILUSE); check_point(7); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(35); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(45); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(0); }
void task3(intptr_t exinf) { ER_UINT ercd; T_RTSK rtsk; PRI intpri; switch (++task3_count) { case 1: check_point(7); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); check_point(9); ercd = unl_mtx(MTX1); check_ercd(ercd, E_OK); ercd = act_tsk(TASK2); check_ercd(ercd, E_OK); ercd = act_tsk(TASK2); check_ercd(ercd, E_OK); check_point(10); ercd = ext_tsk(); check_ercd(ercd, E_OK); check_point(0); case 2: check_point(14); ercd = ref_tsk(TASK2, &rtsk); check_ercd(ercd, E_OK); check_assert(rtsk.tskstat == TTS_RDY); check_assert(rtsk.actcnt == 0U); ercd = loc_cpu(); check_ercd(ercd, E_OK); ercd = ext_tsk(); check_ercd(ercd, E_OK); check_point(0); case 3: check_point(19); ercd = get_ipm(&intpri); check_ercd(ercd, E_OK); check_assert(intpri == TIPM_ENAALL); ercd = act_tsk(TASK2); check_ercd(ercd, E_OK); check_point(20); ercd = ext_tsk(); check_ercd(ercd, E_OK); check_point(0); case 4: check_point(26); check_assert(sns_dsp() == false); ercd = ext_tsk(); check_ercd(ercd, E_OK); check_point(0); default: check_point(0); } check_point(0); }
void task5(intptr_t exinf) { ER_UINT ercd; PRI tskpri; check_point(4); ercd = ini_mtx(MTX1); check_ercd(ercd, E_OK); ercd = get_pri(TASK1, &tskpri); check_ercd(ercd, E_OK); check_assert(tskpri == LOW_PRIORITY); check_point(5); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(14); ercd = ini_mtx(MTX1); check_ercd(ercd, E_OK); ercd = get_pri(TASK1, &tskpri); check_ercd(ercd, E_OK); check_assert(tskpri == MID_PRIORITY); check_point(15); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(27); ercd = ini_mtx(MTX3); check_ercd(ercd, E_OK); ercd = get_pri(TASK1, &tskpri); check_ercd(ercd, E_OK); check_assert(tskpri == MID_PRIORITY); check_point(28); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(38); ercd = loc_mtx(MTX4); check_ercd(ercd, E_OK); check_point(39); ercd = tslp_tsk(10000U); check_ercd(ercd, E_TMOUT); check_point(43); ercd = ini_mtx(MTX1); check_ercd(ercd, E_OK); ercd = get_pri(TASK1, &tskpri); check_ercd(ercd, E_OK); check_assert(tskpri == LOW_PRIORITY); check_point(44); ercd = unl_mtx(MTX4); check_ercd(ercd, E_OK); check_point(45); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(49); ercd = loc_mtx(MTX4); check_ercd(ercd, E_OK); check_point(50); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(58); ercd = ini_mtx(MTX1); check_ercd(ercd, E_OK); ercd = get_pri(TASK1, &tskpri); check_ercd(ercd, E_OK); check_assert(tskpri == MID_PRIORITY); check_point(59); ercd = unl_mtx(MTX4); check_ercd(ercd, E_OK); check_point(60); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(68); ercd = loc_mtx(MTX4); check_ercd(ercd, E_OK); check_point(69); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(78); ercd = ini_mtx(MTX3); check_ercd(ercd, E_OK); ercd = get_pri(TASK1, &tskpri); check_ercd(ercd, E_OK); check_assert(tskpri == MID_PRIORITY); check_point(79); ercd = unl_mtx(MTX4); check_ercd(ercd, E_OK); check_point(80); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(93); ercd = wup_tsk(TASK4); check_ercd(ercd, E_OK); check_point(94); ercd = ini_mtx(MTX1); check_ercd(ercd, E_OK); check_point(95); ercd = ext_tsk(); check_point(0); }
void main_task(intptr_t unused) { ev3_lcd_set_font(EV3_FONT_MEDIUM); ev3_font_get_size(EV3_FONT_MEDIUM, &fontw, &fonth); memfile_t memfile; ev3_memfile_load("/test.bmp", &memfile); image_t image; ev3_image_load(&memfile, &image); ev3_lcd_draw_image(&image, 0, fonth * 2); //ev3_sta_cyc(TEST_EV3_CYC1); // Enable TEST_EV3_CYC2 for 5 seconds ev3_sta_cyc(TEST_EV3_CYC2); tslp_tsk(5000); ev3_stp_cyc(TEST_EV3_CYC2); syslog(LOG_NOTICE, "TEST DTQ"); intptr_t data = 0xdeadbeef; assert(snd_dtq(DTQ1, data) == E_OK); data = 0; assert(rcv_dtq(DTQ1, &data) == E_OK); assert(data == 0xdeadbeef); syslog(LOG_NOTICE, "TEST PDQ"); data = 0xdeadbeef; assert(snd_pdq(PDQ1, data, 1) == E_OK); data = 0xdeadbee2; assert(snd_pdq(PDQ1, data, 2) == E_OK); PRI datapri; assert(rcv_pdq(PDQ1, &data, &datapri) == E_OK); assert(data == 0xdeadbeef && datapri == 1); assert(rcv_pdq(PDQ1, &data, &datapri) == E_OK); assert(data == 0xdeadbee2 && datapri == 2); syslog(LOG_NOTICE, "TEST MTX"); assert(loc_mtx(MTX1) == E_OK); assert(unl_mtx(MTX1) == E_OK); syslog(LOG_NOTICE, "TEST DONE"); #if 0 // Register button handlers ev3_button_set_on_clicked(BACK_BUTTON, button_clicked_handler, BACK_BUTTON); ev3_button_set_on_clicked(ENTER_BUTTON, button_clicked_handler, ENTER_BUTTON); ev3_button_set_on_clicked(LEFT_BUTTON, button_clicked_handler, LEFT_BUTTON); // Configure sensors ev3_sensor_config(gyro_sensor, GYRO_SENSOR); // Configure motors ev3_motor_config(left_motor, LARGE_MOTOR); ev3_motor_config(right_motor, LARGE_MOTOR); // Start task for self-balancing act_tsk(BALANCE_TASK); // Open Bluetooth file bt = ev3_serial_open_file(EV3_SERIAL_BT); assert(bt != NULL); // Start task for printing message while idle act_tsk(IDLE_TASK); while(1) { uint8_t c = fgetc(bt); sus_tsk(IDLE_TASK); switch(c) { case 'w': if(motor_control_drive < 0) motor_control_drive = 0; else motor_control_drive += 10; fprintf(bt, "motor_control_drive: %d\n", motor_control_drive); break; case 's': if(motor_control_drive > 0) motor_control_drive = 0; else motor_control_drive -= 10; fprintf(bt, "motor_control_drive: %d\n", motor_control_drive); break; case 'a': if(motor_control_steer < 0) motor_control_steer = 0; else motor_control_steer += 10; fprintf(bt, "motor_control_steer: %d\n", motor_control_steer); break; case 'd': if(motor_control_steer > 0) motor_control_steer = 0; else motor_control_steer -= 10; fprintf(bt, "motor_control_steer: %d\n", motor_control_steer); break; case 'h': fprintf(bt, "==========================\n"); fprintf(bt, "Usage:\n"); fprintf(bt, "Press 'w' to speed up\n"); fprintf(bt, "Press 's' to speed down\n"); fprintf(bt, "Press 'a' to turn left\n"); fprintf(bt, "Press 'd' to turn right\n"); fprintf(bt, "Press 'i' for idle task\n"); fprintf(bt, "Press 'h' for this message\n"); fprintf(bt, "==========================\n"); break; case 'i': fprintf(bt, "Idle task started.\n"); rsm_tsk(IDLE_TASK); break; default: fprintf(bt, "Unknown key '%c' pressed.\n", c); } } #endif }
void task1(intptr_t exinf) { ER_UINT ercd; PRI tskpri; test_start(__FILE__); set_bit_func(bit_mutex); check_point(1); ercd = dis_dsp(); check_ercd(ercd, E_OK); check_point(2); ercd = act_tsk(TASK2); check_ercd(ercd, E_OK); ercd = act_tsk(TASK4); check_ercd(ercd, E_OK); check_point(3); ercd = ploc_mtx(MTX2); check_ercd(ercd, E_OK); ercd = get_pri(TSK_SELF, &tskpri); check_ercd(ercd, E_OK); check_assert(tskpri == HIGH_PRIORITY); check_point(4); ercd = ena_dsp(); check_ercd(ercd, E_OK); check_point(5); ercd = unl_mtx(MTX2); check_ercd(ercd, E_OK); check_point(8); ercd = get_pri(TSK_SELF, &tskpri); check_ercd(ercd, E_OK); check_assert(tskpri == MID_PRIORITY); check_point(9); ercd = dis_dsp(); check_ercd(ercd, E_OK); check_point(10); ercd = rot_rdq(MID_PRIORITY); check_ercd(ercd, E_OK); check_point(11); ercd = act_tsk(TASK3); check_ercd(ercd, E_OK); check_point(12); ercd = ploc_mtx(MTX1); check_ercd(ercd, E_OK); ercd = get_pri(TSK_SELF, &tskpri); check_ercd(ercd, E_OK); check_assert(tskpri == MID_PRIORITY); check_point(13); ercd = ena_dsp(); check_ercd(ercd, E_OK); check_point(15); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(18); ercd = wup_tsk(TASK2); check_ercd(ercd, E_OK); check_point(19); ercd = dis_dsp(); check_ercd(ercd, E_OK); check_point(20); ercd = rot_rdq(MID_PRIORITY); check_ercd(ercd, E_OK); check_point(21); ercd = wup_tsk(TASK3); check_ercd(ercd, E_OK); check_point(22); ercd = unl_mtx(MTX1); check_ercd(ercd, E_OK); ercd = get_pri(TSK_SELF, &tskpri); check_ercd(ercd, E_OK); check_assert(tskpri == MID_PRIORITY); check_point(23); ercd = ena_dsp(); check_ercd(ercd, E_OK); check_point(25); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(28); ercd = dis_dsp(); check_ercd(ercd, E_OK); check_point(29); ercd = wup_tsk(TASK4); check_ercd(ercd, E_OK); check_point(30); ercd = ploc_mtx(MTX2); check_ercd(ercd, E_OK); check_point(31); ercd = rot_rdq(HIGH_PRIORITY); check_ercd(ercd, E_OK); check_point(32); ercd = act_tsk(TASK5); check_ercd(ercd, E_OK); check_point(33); ercd = ploc_mtx(MTX1); check_ercd(ercd, E_OK); ercd = get_pri(TSK_SELF, &tskpri); check_ercd(ercd, E_OK); check_assert(tskpri == HIGH_PRIORITY); check_point(34); ercd = ena_dsp(); check_ercd(ercd, E_OK); check_point(36); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(39); ercd = dis_dsp(); check_ercd(ercd, E_OK); check_point(40); ercd = wup_tsk(TASK4); check_ercd(ercd, E_OK); check_point(41); ercd = rot_rdq(HIGH_PRIORITY); check_ercd(ercd, E_OK); check_point(42); ercd = wup_tsk(TASK5); check_ercd(ercd, E_OK); check_point(43); ercd = unl_mtx(MTX1); check_ercd(ercd, E_OK); ercd = get_pri(TSK_SELF, &tskpri); check_ercd(ercd, E_OK); check_assert(tskpri == HIGH_PRIORITY); check_point(44); ercd = ena_dsp(); check_ercd(ercd, E_OK); check_point(46); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(49); ercd = wup_tsk(TASK2); check_ercd(ercd, E_OK); ercd = wup_tsk(TASK3); check_ercd(ercd, E_OK); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(52); ercd = unl_mtx(MTX2); check_ercd(ercd, E_OK); ercd = get_pri(TASK2, &tskpri); check_ercd(ercd, E_OK); check_assert(tskpri == HIGH_PRIORITY); check_point(53); ercd = loc_mtx(MTX3); check_ercd(ercd, E_OK); ercd = chg_pri(TASK1, TPRI_INI); check_ercd(ercd, E_OK); check_point(54); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); check_point(55); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(58); ercd = unl_mtx(MTX1); check_ercd(ercd, E_OK); ercd = get_pri(TASK2, &tskpri); check_ercd(ercd, E_OK); check_assert(tskpri == HIGH_PRIORITY); check_point(59); ercd = unl_mtx(MTX3); check_ercd(ercd, E_OK); check_point(64); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); check_finish(69); check_point(0); }
static ER _dmloader_rmv_ldm(ID ldm_can_id) { // TODO: hard coded & should check ldm_can status if (ldm_can_id != 1) return E_ID; T_LDM_CAN *ldm_can = &ldm_cans[ldm_can_id - 1]; ER ercd; ercd = loc_mtx(DMLOADER_MTX); if(ercd != E_OK) { syslog(LOG_ERROR, "%s(): Acquire mutex failed.", __FUNCTION__); goto error_exit; } if (ldm_can->status != LDM_CAN_RUNNING) { syslog(LOG_ERROR, "%s(): LDM container is not running.", __FUNCTION__); ercd = E_OBJ; goto error_exit; } // Destroy all EV3CYCs destroy_all_ev3cyc(); // Deletion for(SIZE i = 0; i < ldm_can->cfg_entry_num && ercd == E_OK; ++i) { MOD_CFG_ENTRY *ent = &ldm_can->cfg_table[i]; switch(ent->sfncd) { case TSFN_CRE_TSK: { syslog(LOG_DEBUG, "%s(): RMV MOD_CFG_ENTRY TSFN_CRE_TSK", __FUNCTION__); ID tskid = *(ID*)ent->retvalptr; ter_tsk(tskid); ercd = del_tsk(tskid); assert(ercd == E_OK); break; } case TSFN_CRE_SEM: { syslog(LOG_DEBUG, "%s(): RMV MOD_CFG_ENTRY TSFN_CRE_SEM", __FUNCTION__); ID semid = *(ID*)ent->retvalptr; ercd = del_sem(semid); assert(ercd == E_OK); break; } case TSFN_CRE_FLG: { syslog(LOG_DEBUG, "%s(): RMV MOD_CFG_ENTRY TSFN_CRE_FLG", __FUNCTION__); ID flgid = *(ID*)ent->retvalptr; ercd = del_flg(flgid); assert(ercd == E_OK); break; } default: syslog(LOG_ERROR, "%s(): Unsupported static function code %d.", __FUNCTION__, ent->sfncd); ercd = E_OBJ; goto error_exit; } } ldm_can->status = LDM_CAN_FREE; // TODO: clean ldm_can error_exit: unl_mtx(DMLOADER_MTX); return ercd; }
void task3(intptr_t exinf) { ER_UINT ercd; T_RTSK rtsk; switch (++task3_count) { case 1: check_point(10); ercd = tloc_mtx(MTX1, 3 * TEST_TIME_CP); check_ercd(ercd, E_OK); check_point(11); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(0); case 2: check_point(16); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); check_point(17); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(0); case 3: check_point(29); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(0); case 4: check_point(33); ercd = ref_tsk(TASK3, &rtsk); check_ercd(ercd, E_OK); check_assert(rtsk.tskstat == TTS_RUN); check_assert(rtsk.actcnt == 0U); ercd = ext_tsk(); check_ercd(ercd, E_OK); check_point(0); case 5: check_point(47); ercd = dis_ter(); check_ercd(ercd, E_OK); ercd = slp_tsk(); check_ercd(ercd, E_RASTER); check_point(50); ercd = ref_tsk(TASK3, &rtsk); check_ercd(ercd, E_OK); check_assert(rtsk.tskstat == TTS_RUN); check_assert(rtsk.raster == true); check_assert(rtsk.dister == true); check_point(51); ercd = slp_tsk(); check_ercd(ercd, E_RASTER); ercd = ena_ter(); check_ercd(ercd, E_OK); check_point(0); case 6: check_point(54); ercd = dis_ter(); check_ercd(ercd, E_OK); ercd = sus_tsk(TSK_SELF); check_ercd(ercd, E_OK); check_point(57); ercd = ref_tsk(TASK3, &rtsk); check_ercd(ercd, E_OK); check_assert(rtsk.tskstat == TTS_RUN); check_assert(rtsk.raster == true); check_assert(rtsk.dister == true); ercd = sus_tsk(TSK_SELF); check_ercd(ercd, E_RASTER); ercd = ena_ter(); check_ercd(ercd, E_OK); check_point(0); default: check_point(0); } check_point(0); }
void task1(intptr_t exinf) { ER_UINT ercd; test_start(__FILE__); set_bit_func(bit_mutex); check_point(1); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); check_point(2); ercd = act_tsk(TASK2); check_ercd(ercd, E_OK); check_point(3); ercd = act_tsk(TASK5); check_ercd(ercd, E_OK); check_point(6); ercd = sus_tsk(TASK2); check_ercd(ercd, E_OK); check_point(7); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); ercd = loc_mtx(MTX2); check_ercd(ercd, E_OK); check_point(8); ercd = act_tsk(TASK3); check_ercd(ercd, E_OK); check_point(9); ercd = dis_dsp(); check_ercd(ercd, E_OK); check_point(10); ercd = rot_rdq(MID_PRIORITY); check_ercd(ercd, E_OK); check_point(11); ercd = act_tsk(TASK4); check_ercd(ercd, E_OK); check_point(12); ercd = wup_tsk(TASK5); check_ercd(ercd, E_OK); check_point(13); ercd = ena_dsp(); check_ercd(ercd, E_OK); check_point(17); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(20); ercd = loc_mtx(MTX3); check_ercd(ercd, E_OK); check_point(21); ercd = wup_tsk(TASK3); check_ercd(ercd, E_OK); check_point(22); ercd = dis_dsp(); check_ercd(ercd, E_OK); check_point(23); ercd = rot_rdq(MID_PRIORITY); check_ercd(ercd, E_OK); check_point(24); ercd = wup_tsk(TASK4); check_ercd(ercd, E_OK); check_point(25); ercd = wup_tsk(TASK5); check_ercd(ercd, E_OK); check_point(26); ercd = ena_dsp(); check_ercd(ercd, E_OK); check_point(30); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(33); ercd = rsm_tsk(TASK2); check_ercd(ercd, E_OK); check_point(34); ercd = ini_mtx(MTX2); check_ercd(ercd, E_OK); check_point(37); ercd = wup_tsk(TASK5); check_ercd(ercd, E_OK); check_point(40); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); check_point(41); ercd = loc_mtx(MTX4); check_ercd(ercd, E_OK); check_point(47); ercd = unl_mtx(MTX4); check_ercd(ercd, E_OK); check_point(48); ercd = wup_tsk(TASK5); check_ercd(ercd, E_OK); check_point(51); ercd = wup_tsk(TASK3); check_ercd(ercd, E_OK); check_point(53); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); ercd = loc_mtx(MTX2); check_ercd(ercd, E_OK); check_point(54); ercd = loc_mtx(MTX4); check_ercd(ercd, E_OK); check_point(62); ercd = unl_mtx(MTX4); check_ercd(ercd, E_OK); check_point(65); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(73); ercd = loc_mtx(MTX3); check_ercd(ercd, E_OK); check_point(74); ercd = loc_mtx(MTX4); check_ercd(ercd, E_OK); check_point(82); ercd = unl_mtx(MTX4); check_ercd(ercd, E_OK); check_point(85); ercd = unl_mtx(MTX2); check_ercd(ercd, E_OK); check_point(87); ercd = sus_tsk(TASK2); check_ercd(ercd, E_OK); check_point(88); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); check_point(89); ercd = wup_tsk(TASK3); check_ercd(ercd, E_OK); check_point(90); ercd = rot_rdq(MID_PRIORITY); check_ercd(ercd, E_OK); check_point(92); ercd = wup_tsk(TASK5); check_ercd(ercd, E_OK); check_point(98); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); check_point(99); ercd = wup_tsk(TASK3); check_ercd(ercd, E_OK); check_point(100); ercd = rot_rdq(MID_PRIORITY); check_ercd(ercd, E_OK); check_point(102); ercd = rsm_tsk(TASK2); check_ercd(ercd, E_OK); check_point(103); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(0); }
void task2(intptr_t exinf) { ER ercd; switch (++task2_count) { case 1: check_point(3); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); check_point(4); ercd = ext_tsk(); check_point(0); case 2: check_point(8); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); check_point(9); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(12); ercd = ext_tsk(); check_point(0); case 3: check_point(16); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); ercd = loc_mtx(MTX2); check_ercd(ercd, E_OK); check_point(17); ercd = ext_tsk(); check_point(0); case 4: check_point(21); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); ercd = loc_mtx(MTX2); check_ercd(ercd, E_OK); check_point(22); ercd = chg_pri(TASK1, HIGH_PRIORITY); check_ercd(ercd, E_OK); check_point(23); ercd = rot_rdq(TPRI_SELF); check_ercd(ercd, E_OK); check_point(24); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(29); ercd = ext_tsk(); check_point(0); } check_point(0); }
void task1(intptr_t exinf) { ER ercd; T_RTSK rtsk; T_RMTX rmtx; set_bit_func(bit_mutex); check_point(1); ercd = ref_mtx(MTX1, &rmtx); check_ercd(ercd, E_OK); check_assert(rmtx.htskid == TSK_NONE); check_assert(rmtx.wtskid == TSK_NONE); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); check_point(2); ercd = ref_tsk(TASK1, &rtsk); check_ercd(ercd, E_OK); check_assert(rtsk.tskpri == HIGH_PRIORITY); check_assert(rtsk.tskbpri == LOW_PRIORITY); ercd = loc_mtx(MTX1); check_ercd(ercd, E_ILUSE); check_point(3); ercd = ref_mtx(MTX1, &rmtx); check_ercd(ercd, E_OK); check_assert(rmtx.htskid == TASK1); check_assert(rmtx.wtskid == TSK_NONE); ercd = act_tsk(TASK2); check_ercd(ercd, E_OK); check_point(4); ercd = tslp_tsk(10); check_ercd(ercd, E_TMOUT); check_point(6); ercd = ref_mtx(MTX1, &rmtx); check_ercd(ercd, E_OK); check_assert(rmtx.htskid == TASK1); check_assert(rmtx.wtskid == TASK2); ercd = act_tsk(TASK3); check_ercd(ercd, E_OK); check_point(7); ercd = tslp_tsk(10); check_ercd(ercd, E_TMOUT); check_point(10); ercd = ref_mtx(MTX1, &rmtx); check_ercd(ercd, E_OK); check_assert(rmtx.htskid == TASK1); check_assert(rmtx.wtskid == TASK3); ercd = dis_dsp(); check_ercd(ercd, E_OK); ercd = unl_mtx(MTX1); check_ercd(ercd, E_OK); check_point(11); ercd = ref_tsk(TASK1, &rtsk); check_ercd(ercd, E_OK); check_assert(rtsk.tskpri == LOW_PRIORITY); check_assert(rtsk.tskbpri == LOW_PRIORITY); ercd = ref_mtx(MTX1, &rmtx); check_ercd(ercd, E_OK); check_assert(rmtx.htskid == TASK3); check_assert(rmtx.wtskid == TASK2); ercd = ena_dsp(); check_ercd(ercd, E_OK); check_point(16); ercd = ref_mtx(MTX1, &rmtx); check_ercd(ercd, E_OK); check_assert(rmtx.htskid == TASK2); check_assert(rmtx.wtskid == TSK_NONE); ercd = tloc_mtx(MTX1, 10); check_ercd(ercd, E_TMOUT); check_point(17); ercd = wup_tsk(TASK2); check_ercd(ercd, E_OK); check_finish(20); check_point(0); }
void task5(intptr_t exinf) { ID tskid; ER_UINT ercd; uint_t load; check_point(13); ercd = get_lod(TPRI_SELF, &load); check_ercd(ercd, E_OK); check_assert(load == 1U); ercd = get_nth(TPRI_SELF, 0U, &tskid); check_ercd(ercd, E_OK); check_assert(tskid == TASK5); check_point(14); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); ercd = get_lod(TPRI_SELF, &load); check_ercd(ercd, E_OK); check_assert(load == 0U); ercd = get_nth(TPRI_SELF, 0U, &tskid); check_ercd(ercd, E_OK); check_assert(tskid == TSK_NONE); ercd = get_lod(MID_PRIORITY, &load); check_ercd(ercd, E_OK); check_assert(load == 1U); ercd = get_nth(MID_PRIORITY, 0U, &tskid); check_ercd(ercd, E_OK); check_assert(tskid == TASK5); check_point(15); ercd = wup_tsk(TASK2); check_ercd(ercd, E_OK); ercd = get_lod(TPRI_SELF, &load); check_ercd(ercd, E_OK); check_assert(load == 0U); ercd = get_lod(MID_PRIORITY, &load); check_ercd(ercd, E_OK); check_assert(load == 2U); check_point(16); ercd = unl_mtx(MTX1); check_ercd(ercd, E_OK); check_point(19); ercd = get_lod(TPRI_SELF, &load); check_ercd(ercd, E_OK); check_assert(load == 2U); ercd = get_nth(TPRI_SELF, 0U, &tskid); check_ercd(ercd, E_OK); check_assert(tskid == TASK5); check_finish(20); check_point(0); }
void task4(intptr_t exinf) { ER_UINT ercd; PRI tskpri; check_point(18); ercd = wup_tsk(TASK1); check_ercd(ercd, E_OK); check_point(19); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(31); ercd = wup_tsk(TASK1); check_ercd(ercd, E_OK); check_point(32); ercd = rot_rdq(MID_PRIORITY); check_ercd(ercd, E_OK); check_point(35); ercd = get_pri(TASK1, &tskpri); check_ercd(ercd, E_OK); check_assert(tskpri == LOW_PRIORITY); check_point(36); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(56); ercd = loc_mtx(MTX4); check_ercd(ercd, E_OK); check_point(63); ercd = unl_mtx(MTX4); check_ercd(ercd, E_OK); check_point(64); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(76); ercd = loc_mtx(MTX4); check_ercd(ercd, E_OK); check_point(83); ercd = unl_mtx(MTX4); check_ercd(ercd, E_OK); check_point(84); ercd = slp_tsk(); check_ercd(ercd, E_OK); check_point(96); ercd = ext_tsk(); check_point(0); }
void task2(intptr_t exinf) { ER_UINT ercd; T_RTSK rtsk; switch (++task2_count) { case 1: check_point(4); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); ercd = ext_tsk(); check_ercd(ercd, E_OK); check_point(0); case 2: check_point(6); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); ercd = act_tsk(TASK3); check_ercd(ercd, E_OK); check_point(8); ercd = ext_tsk(); check_ercd(ercd, E_OK); check_point(0); case 3: check_point(11); ercd = ext_tsk(); check_ercd(ercd, E_OK); check_point(0); case 4: check_point(12); ercd = ref_tsk(TASK2, &rtsk); check_ercd(ercd, E_OK); check_assert(rtsk.tskstat == TTS_RUN); check_assert(rtsk.actcnt == 0U); ercd = act_tsk(TASK2); check_ercd(ercd, E_OK); ercd = chg_pri(TASK2, TASK3_PRIORITY); check_ercd(ercd, E_OK); ercd = act_tsk(TASK3); check_ercd(ercd, E_OK); check_point(13); ercd = ext_tsk(); check_ercd(ercd, E_OK); check_point(0); case 5: check_point(15); check_assert(sns_loc() == false); ercd = chg_ipm(TMAX_INTPRI); check_ercd(ercd, E_OK); ercd = ext_tsk(); check_ercd(ercd, E_OK); check_point(0); case 6: check_point(17); ercd = chg_ipm(TMAX_INTPRI); check_ercd(ercd, E_OK); ercd = act_tsk(TASK3); check_ercd(ercd, E_OK); ercd = act_tsk(TASK4); check_ercd(ercd, E_OK); check_point(18); ercd = ext_tsk(); check_ercd(ercd, E_OK); check_point(0); case 7: check_point(22); ercd = dis_dsp(); check_ercd(ercd, E_OK); ercd = ext_tsk(); check_ercd(ercd, E_OK); check_point(0); case 8: check_point(24); ercd = dis_dsp(); check_ercd(ercd, E_OK); ercd = act_tsk(TASK3); check_ercd(ercd, E_OK); ercd = act_tsk(TASK4); check_ercd(ercd, E_OK); check_point(25); ercd = ext_tsk(); check_ercd(ercd, E_OK); check_point(0); default: check_point(0); } check_point(0); }
void task1(intptr_t exinf) { ER_UINT ercd; T_RMTX rmtx; test_start(__FILE__); set_bit_func(bit_mutex); check_point(1); ercd = ref_mtx(MTX1, &rmtx); check_ercd(ercd, E_OK); check_assert(rmtx.htskid == TSK_NONE); check_assert(rmtx.wtskid == TSK_NONE); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OK); check_point(2); ercd = loc_mtx(MTX1); check_ercd(ercd, E_OBJ); check_point(3); ercd = ref_mtx(MTX1, &rmtx); check_ercd(ercd, E_OK); check_assert(rmtx.htskid == TASK1); check_assert(rmtx.wtskid == TSK_NONE); ercd = act_tsk(TASK2); check_ercd(ercd, E_OK); check_point(5); ercd = ref_mtx(MTX1, &rmtx); check_ercd(ercd, E_OK); check_assert(rmtx.htskid == TASK1); check_assert(rmtx.wtskid == TASK2); ercd = act_tsk(TASK3); check_ercd(ercd, E_OK); check_point(8); ercd = ref_mtx(MTX1, &rmtx); check_ercd(ercd, E_OK); check_assert(rmtx.htskid == TASK1); check_assert(rmtx.wtskid == TASK2); ercd = dis_dsp(); check_ercd(ercd, E_OK); ercd = unl_mtx(MTX1); check_ercd(ercd, E_OK); check_point(9); ercd = ref_mtx(MTX1, &rmtx); check_ercd(ercd, E_OK); check_assert(rmtx.htskid == TASK2); check_assert(rmtx.wtskid == TASK3); ercd = ena_dsp(); check_ercd(ercd, E_OK); check_point(14); ercd = ref_mtx(MTX1, &rmtx); check_ercd(ercd, E_OK); check_assert(rmtx.htskid == TASK2); check_assert(rmtx.wtskid == TSK_NONE); ercd = tloc_mtx(MTX1, 3 * TEST_TIME_CP); check_ercd(ercd, E_TMOUT); check_point(15); ercd = wup_tsk(TASK2); check_ercd(ercd, E_OK); check_finish(18); check_point(0); }