static bool batch_update(struct fb_info *info, struct omap3epfb_update_area *p) { struct omap3epfb_par *par = info->par; // If EPD is disabled, do nothing if (par->disable_flags > 0) { DEBUG_REGION(DEBUG_LEVEL3, p,"update DISABLED = "); // Tell the caller not to update. return false; } // Check if the delayed full screen updates are enabled. if (!par->clear_delay) { DEBUG_REGION(DEBUG_LEVEL1, p," do = "); if (fast==1) { omap3epfb_update_screen(par->info, OMAP3EPFB_WVFID_VU, false); } else { omap3epfb_update_area(info, p); } return false; } // If this is not a fullscreen GC update, treat it as a normal update. if (!(rect_fullscreen(info, p) && p->wvfid == OMAP3EPFB_WVFID_GC)) { // If we have a fullscreen batched, we do not need to update. if (!delayed_work_pending(&par->clear_work)) { DEBUG_REGION(DEBUG_LEVEL1, p," do = "); if (fast==1) { omap3epfb_update_screen(par->info, OMAP3EPFB_WVFID_VU, false); } else { omap3epfb_update_area(info, p); } } else { DEBUG_REGION(DEBUG_LEVEL1, p," skip = "); } return false; } // We need to do fullscreen batching. if (par->user_debug & DEBUG_LEVEL1) { if (TIME_DELTA_MS(par->last_clear) < 1000) DEBUG_REGION(DEBUG_LEVEL1, p," req FULLSCREEN PREV %dms ago AUTO = ", TIME_DELTA_MS(par->last_clear)); else DEBUG_REGION(DEBUG_LEVEL1, p," req FULLSCREEN = "); } omap3epfb_reqq_purge(par->info); cancel_delayed_work_sync(&par->clear_work); schedule_delayed_work(&par->clear_work, msecs_to_jiffies(par->clear_delay)); par->last_clear = TIME_STAMP(); return true; }
int s_arm_t::do_command(s_arm_command_t cmd) { PRINT_INFO("%s do_command\n", TIME_STAMP()); switch(cmd.m_command) { case S_CMD_MOVE_TO: m_servo[cmd.m_servo_id]->move_to(cmd.m_pos, cmd.m_speed); break; case S_CMD_POWER_OFF: m_servo[cmd.m_servo_id]->power_off(); break; } return 0; }
static void omap3epfb_lost_update(struct work_struct *work) { struct omap3epfb_par *par = container_of(work, struct omap3epfb_par, lost_update.work); printk("lost_update\n"); // if (skip==1) { cancel_delayed_work_sync(&par->clear_work); cancel_delayed_work_sync(&par->disable_work); g_disable_time = 0; // Reset expiration time par->disable_flags = 0; par->last_clear = TIME_STAMP(); omap3epfb_reqq_purge(par->info); if (fast==0) { omap3epfb_update_screen(par->info, OMAP3EPFB_WVFID_GU, false); } else { omap3epfb_update_screen(par->info, OMAP3EPFB_WVFID_VU, false); } // } }
INT cd_gen_read(char *pevent, int offset) { float *pdata; GEN_INFO *gen_info; EQUIPMENT *pequipment; #ifdef HAVE_YBOS DWORD *pdw; #endif pequipment = *((EQUIPMENT **) pevent); gen_info = (GEN_INFO *) pequipment->cd_info; if (gen_info->format == FORMAT_FIXED) { memcpy(pevent, gen_info->demand, sizeof(float) * gen_info->num_channels); pevent += sizeof(float) * gen_info->num_channels; memcpy(pevent, gen_info->measured, sizeof(float) * gen_info->num_channels); pevent += sizeof(float) * gen_info->num_channels; return 2 * sizeof(float) * gen_info->num_channels; } else if (gen_info->format == FORMAT_MIDAS) { bk_init(pevent); /* create DMND bank */ bk_create(pevent, "DMND", TID_FLOAT, (void **)&pdata); memcpy(pdata, gen_info->demand, sizeof(float) * gen_info->num_channels); pdata += gen_info->num_channels; bk_close(pevent, pdata); /* create MSRD bank */ bk_create(pevent, "MSRD", TID_FLOAT, (void **)&pdata); memcpy(pdata, gen_info->measured, sizeof(float) * gen_info->num_channels); pdata += gen_info->num_channels; bk_close(pevent, pdata); return bk_size(pevent); } else if (gen_info->format == FORMAT_YBOS) { #ifdef HAVE_YBOS ybk_init((DWORD *) pevent); /* create EVID bank */ ybk_create((DWORD *) pevent, "EVID", I4_BKTYPE, (DWORD *) (&pdw)); *(pdw)++ = EVENT_ID(pevent); /* Event_ID + Mask */ *(pdw)++ = SERIAL_NUMBER(pevent); /* Serial number */ *(pdw)++ = TIME_STAMP(pevent); /* Time Stamp */ ybk_close((DWORD *) pevent, pdw); /* create DMND bank */ ybk_create((DWORD *) pevent, "DMND", F4_BKTYPE, (DWORD *) & pdata); memcpy(pdata, gen_info->demand, sizeof(float) * gen_info->num_channels); pdata += gen_info->num_channels; ybk_close((DWORD *) pevent, pdata); /* create MSRD bank */ ybk_create((DWORD *) pevent, "MSRD", F4_BKTYPE, (DWORD *) & pdata); memcpy(pdata, gen_info->measured, sizeof(float) * gen_info->num_channels); pdata += gen_info->num_channels; ybk_close((DWORD *) pevent, pdata); return ybk_size((DWORD *) pevent); #else assert(!"YBOS support not compiled in"); #endif } return 0; }
INT cd_multi_read(char *pevent, int offset) { float *pdata; MULTI_INFO *m_info; EQUIPMENT *pequipment; #ifdef HAVE_YBOS DWORD *pdw; #endif pequipment = *((EQUIPMENT **) pevent); m_info = (MULTI_INFO *) pequipment->cd_info; if (m_info->format == FORMAT_FIXED) { memcpy(pevent, m_info->var_input, sizeof(float) * m_info->num_channels_input); pevent += sizeof(float) * m_info->num_channels_input; memcpy(pevent, m_info->var_output, sizeof(float) * m_info->num_channels_output); pevent += sizeof(float) * m_info->num_channels_output; return sizeof(float) * (m_info->num_channels_input + m_info->num_channels_output); } else if (m_info->format == FORMAT_MIDAS) { bk_init(pevent); /* create INPT bank */ if (m_info->num_channels_input) { bk_create(pevent, "INPT", TID_FLOAT, (void **)&pdata); memcpy(pdata, m_info->var_input, sizeof(float) * m_info->num_channels_input); pdata += m_info->num_channels_input; bk_close(pevent, pdata); } /* create OUTP bank */ if (m_info->num_channels_output) { bk_create(pevent, "OUTP", TID_FLOAT, (void **)&pdata); memcpy(pdata, m_info->var_output, sizeof(float) * m_info->num_channels_output); pdata += m_info->num_channels_output; bk_close(pevent, pdata); } return bk_size(pevent); } else if (m_info->format == FORMAT_YBOS) { #ifdef HAVE_YBOS ybk_init((DWORD *) pevent); /* create EVID bank */ ybk_create((DWORD *) pevent, "EVID", I4_BKTYPE, (DWORD *) (&pdw)); *(pdw)++ = EVENT_ID(pevent); /* Event_ID + Mask */ *(pdw)++ = SERIAL_NUMBER(pevent); /* Serial number */ *(pdw)++ = TIME_STAMP(pevent); /* Time Stamp */ ybk_close((DWORD *) pevent, pdw); /* create INPT bank */ ybk_create((DWORD *) pevent, "INPT", F4_BKTYPE, (DWORD *) & pdata); memcpy(pdata, m_info->var_input, sizeof(float) * m_info->num_channels_input); pdata += m_info->num_channels_input; ybk_close((DWORD *) pevent, pdata); /* create OUTP bank */ ybk_create((DWORD *) pevent, "OUTP", F4_BKTYPE, (DWORD *) & pdata); memcpy(pdata, m_info->var_output, sizeof(float) * m_info->num_channels_output); pdata += m_info->num_channels_output; ybk_close((DWORD *) pevent, pdata); return ybk_size((DWORD *) pevent); #lese assert(!"YBOS support not compiled in"); #endif } return 0; }