亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? loader.c

?? 本程序為ST公司開發(fā)的源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
/************************************************** * * loader.c * * CVS ID:   $Id: loader.c,v 1.27 2007/10/02 14:19:38 dellorto Exp $ * Author:   Fabio Dell'Orto [FD] - STM * Date:     $Date: 2007/10/02 14:19:38 $ * Revision: $Revision: 1.27 $ *  * Description: *  *   Main entry point for the Loader task. * *************************************************** *  * COPYRIGHT (C) ST Microelectronics  2005 *            All Rights Reserved * *************************************************** * * STM CVS Log: * * $Log: loader.c,v $ * Revision 1.27  2007/10/02 14:19:38  dellorto * improved conservative behavior for Shinwa CDC02 * fixed stop insertion for Shinwa CLC01 * fixed size detection for Tanashin * * Revision 1.26  2007/09/26 15:04:54  dellorto * fixed timings for Shinwa CDC02 * * Revision 1.25  2007/09/07 07:07:03  dellorto * Bug fixing and improvements in Tanashin loader * * Revision 1.24  2007/08/14 15:27:56  dellorto * multiple mechanisms * * Revision 1.22  2006/12/19 17:07:29  dellorto * mechanical initialization according to Shinwa recommendation (30 ms Eject, in case of no cd) * fixed insert transition (in case of disc moved in eject direction) * improved error reporting to player, for recoveries * fixed behavior using the following configuration: conservative behavior;  insert/eject with no cd; reverse direction not allowed * improved illegal switching and disc size detection * clean-up from unused ldr_retval variable, updated function headers, code optimization * * Revision 1.21  2006/12/04 14:50:28  dellorto * loader improved, according to new timing specification * * Revision 1.20  2006/10/26 10:23:43  dellorto * improved alignements with Shinwa transition timings * improved protection against illegal switchings * improved handling of mechanisms with altered chuck switch * * Revision 1.19  2006/10/09 15:17:06  dellorto * added LoaderTask, moved from osal.c * * Revision 1.18  2006/09/27 19:52:04  belardi * Removed (global) unused variables * * Revision 1.17  2006/09/18 09:55:23  belardi * Corrected CVS keyword usage * * Revision 1.16  2006/09/18 09:24:22  belardi * Added Log CVS keyword into file header * * ***************************************************/#include "gendef.h"#include "hwreg.h"#include "osal.h"#include "utility.h"#include "loader.h"#include "monitor.h"#include "plr_conf.h"#include "debug.h"#if (HAVE_CD_MECHA == 1)/*----------------------------------------------------------------------------*//*------------------------    Macros -----------------------------------------*//*----------------------------------------------------------------------------*/#define ldrSendEvent(x) do {                              \  event_out[LOADER_STATUS_EVENT].event = (x);             \  DEBUG_LOADER_STATUS_EVENT(("LOADER_EVENT:", 1, 1, x));  \} while(0)/*----------------------------------------------------------------------------*//*------------------------    local vars  ------------------------------------*//*----------------------------------------------------------------------------*/t_disc_size disc_size;uint8 previous_ldr_switch_state;t_loader_state ldr_state;                 /*!<\brief Current loader state */t_motor_direction  ldr_motor_dir;         /*!<\brief Current motor direction */#define LDR_SET_CMD_EVENT(x) do {           \  event_out[LOADER_CMD_EVENT].event = (x);  \  event_cmd_set(LOADER_CMD_EVENT);          \} while(0)#define LDR_CMD_EVENT     event_in[LOADER_CMD_EVENT].event#define LDR_SW_EVENT      event_in[LOADER_SW_EVENT].event#define ldr_command       LDR_CMD_EVENT#define ldr_switch_state  LDR_SW_EVENT/*----------------------------------------------------------------------------*//*------------------------    Function implementations   ---------------------*//*----------------------------------------------------------------------------*//******************************************************************************//* Function:  set_loader_input                                                *//*                                                                            *//* \brief     set the loader motor input * \param     uint16 loader input  * \return    void * \remark *//******************************************************************************/void set_loader_input(int16 loader_input){  DISABLE_INTERRUPTS();  DSP_SSPDL = (uint8)(loader_input & 0xFF);  DSP_SSPDH = (uint8)(loader_input >> 8);  ENABLE_INTERRUPTS();}/******************************************************************************//* Function:  ldrSetMotor                                                     *//*                                                                            *//*! \brief     *  \param    t_motor_direction direction *  \return   void *  \remark *//******************************************************************************/void ldrSetMotor(t_motor_direction direction){  ldr_motor_dir = direction;  if (IS_TANASHIN_MECHANISM(mechanism_model))  {    switch (direction)    {    case LOADER_DIR_INSERT:      DRIVER_ON;      set_loader_input(LOADER_PRO_INSERT_PARAM);      break;    case LOADER_DIR_EJECT:      DRIVER_ON;      set_loader_input(LOADER_PRO_EJECT_PARAM);      break;    //case LOADER_DIR_IDLE:    default:      set_loader_input(0x0000);      DRIVER_OFF;      break;    }  }  else  {    switch (direction)    {    case LOADER_DIR_INSERT:      set_gpio(PORT_A, GPIO_1, LOADER_PRO_INSERT_GPIO_1);      set_gpio(PORT_A, GPIO_2, LOADER_PRO_INSERT_GPIO_2);      break;    case LOADER_DIR_EJECT:      set_gpio(PORT_A, GPIO_1, LOADER_PRO_EJECT_GPIO_1);      set_gpio(PORT_A, GPIO_2, LOADER_PRO_EJECT_GPIO_2);      break;    //case LOADER_DIR_IDLE:    default:      set_gpio(PORT_A, GPIO_1, 0);      set_gpio(PORT_A, GPIO_2, 0);      break;    }  }}/******************************************************************************//* Function:  StartActionTo                                                   *//*                                                                            *//*! \brief     *  \param    t_motor_direction direction *  \param    t_loader_state state *  \param    OSAL_TIME_t time *  \return   void *  \remark *//******************************************************************************/void StartActionTo(t_motor_direction direction, t_loader_state state, OSAL_TIME_t time){  if (LOADER_S_EJECT_8CM_SUSPICIOUS == state)  {    disc_size = DISC_SIZE_8CM_SUSPICIOUS;    state = LOADER_S_EJECT_8CM_1;  }  if (T0ms != time)  {    start_timer(LOADER_TIMER, time);  }  ldrSetMotor(direction);  ldr_state = state;}/******************************************************************************//* Function:  StartInsertTo                                                   *//*                                                                            *//*! \brief     *  \param    t_loader_state state *  \param    OSAL_TIME_t time *  \return   void *  \remark *//******************************************************************************/void StartInsertTo(t_loader_state state, OSAL_TIME_t time){  StartActionTo(LOADER_DIR_INSERT, state, time);}/******************************************************************************//* Function:  StartEjectTo                                                    *//*                                                                            *//*! \brief     *  \param    t_loader_state state *  \param    OSAL_TIME_t time *  \return   void *  \remark *//******************************************************************************/void StartEjectTo(t_loader_state state, OSAL_TIME_t time){  StartActionTo(LOADER_DIR_EJECT, state, time);}/******************************************************************************//* Function:  IdleMode                                                        *//*                                                                            *//*! \brief     *  \param    t_loader_status_event event *  \param    t_loader_state state *  \return   void *  \remark *//******************************************************************************/void IdleMode(t_loader_status_event event, t_loader_state state){  if ((READY != event)   && (LOADER_S_NOCD_INSERTING != ldr_state)   && (LOADER_S_NOCD_EJECTING != ldr_state)   && ((LOADER_S_EJECT_8CM_1 != ldr_state)    || (DISC_SIZE_8CM_SUSPICIOUS != disc_size)))  {    ldr_command = LC_NONE;  }  if (LOADER_S_NO_CD_POSITION == state)  {    disc_size = DISC_SIZE_UNKNOWN;  }  ldrSetMotor(LOADER_DIR_IDLE);  ldrSendEvent(event);  ldr_state = state;}/******************************************************************************//* Function:  ldrPrepareError                                                 *//*                                                                            *//*! \brief    Prepare loader error state *  \param    RETVAL ldr_error_event *  \return   void *  \remarks *//******************************************************************************/void ldrPrepareError(RETVAL ldr_error_event){  IdleMode(ldr_error_event, LOADER_S_ERROR);}/*****************************************************************************//*                                                                           *//*                              M0_SHINWA_CDC02                              *//*                                                                           *//*****************************************************************************//******************************************************************************//* Function:  StartInsert_Shinwa_CDC02                                        *//*                                                                            *//*! \brief    Start disc insertion according to current position *            (implementation for mechanism: M0_SHINWA_CDC02) *  \param    void *  \return   void *  \remark *//******************************************************************************/void StartInsert_Shinwa_CDC02(void){  switch (SW_VALUE(ldr_switch_state))  {  case SW_S_010_INSERT:    StartInsertTo(LOADER_S_INSERT_1, T5s);    break;  case SW_S_110_EJECT:    StartInsertTo(LOADER_S_INSERT_2, T5s);    break;  case SW_S_000_STOP:    StartEjectTo(LOADER_S_INSERT_REPOSITIONING, T1s);    break;  case SW_S_100_TRANSITION:    StartInsertTo(LOADER_S_INSERT_4, T3s5);    break;  case SW_S_111_8CM:    StartEjectTo(LOADER_S_EJECT_8CM_1, T1s);    ldrSendEvent(LOADER_ERROR_8CM);    break;         case SW_S_011_NOCD:    StartEjectTo(LOADER_S_EJECT_8CM_SUSPICIOUS, T1s);    ldrSendEvent(LOADER_ERROR_8CM);    break;  //SW_S_001_ILLEGAL:  //SW_S_101_ILLEGAL:  default:    ldrSendEvent(LOADER_ERROR_SW_ILLEGAL);    StartEjectTo(LOADER_S_EMERGENCY_EJECT, T5s);    break;  }}/******************************************************************************//* Function:  StartEject_Shinwa_CDC02                                         *//*                                                                            *//*! \brief    Start disc ejection according to current position *            (implementation for mechanism: M0_SHINWA_CDC02) *  \param    void *  \return   void *  \remark *//******************************************************************************/void StartEject_Shinwa_CDC02(void){  switch (SW_VALUE(ldr_switch_state))  {  case SW_S_000_STOP:  case SW_S_100_TRANSITION:    StartEjectTo(LOADER_S_EJECT_12CM_1, T2s);    break;  case SW_S_111_8CM:    StartEjectTo(LOADER_S_EJECT_8CM_1, T1s);    break;  case SW_S_010_INSERT:  case SW_S_110_EJECT:    StartInsertTo(LOADER_S_EJECT_REPOSITIONING, T1s);    break;  case SW_S_011_NOCD:    StartEjectTo(LOADER_S_EJECT_8CM_SUSPICIOUS, T1s);    break;   //SW_S_001_ILLEGAL:  //SW_S_101_ILLEGAL:  default:    ldrSendEvent(LOADER_ERROR_SW_ILLEGAL);    StartEjectTo(LOADER_S_EMERGENCY_EJECT, T5s);    break;  }}/******************************************************************************//* Function:  ldrCommandEval_Shinwa_CDC02                                     *//*                                                                            *//*! \brief    Start actions for a new Loader Command *            (implementation for mechanism: M0_SHINWA_CDC02) *  \param    void *  \return   void *  \remarks *//******************************************************************************/void ldrCommandEval_Shinwa_CDC02(void){  t_bool illegal_switch_detected = b_FALSE;  if ((SW_VALUE(ldr_switch_state) != SW_VALUE(previous_ldr_switch_state))   && (LOADER_S_STOP_POSITION != ldr_state)   && (LOADER_S_EMERGENCY_EJECT != ldr_state))  {    if ((SW_INVALID_VAL != SW_VALUE(previous_ldr_switch_state))     && ((SW_S_001_ILLEGAL == SW_VALUE(ldr_switch_state))      || (SW_S_101_ILLEGAL == SW_VALUE(ldr_switch_state))      || ((DISC_SIZE_12CM == disc_size)       && ((SW_S_111_8CM == SW_VALUE(ldr_switch_state))        || ((SW_S_011_NOCD == SW_VALUE(ldr_switch_state))         && (SW_S_010_INSERT != SW_VALUE(previous_ldr_switch_state)))))      || (((DISC_SIZE_8CM == disc_size)        || (DISC_SIZE_8CM_SUSPICIOUS == disc_size))       && ((SW_S_100_TRANSITION == SW_VALUE(ldr_switch_state))        || (SW_S_000_STOP == SW_VALUE(ldr_switch_state))))      || ((DISC_SIZE_UNKNOWN == disc_size)       && (((SW_S_011_NOCD == SW_VALUE(previous_ldr_switch_state))         && (SW_S_010_INSERT != SW_VALUE(ldr_switch_state)))))))    {      // on illegal SW state      illegal_switch_detected = b_TRUE;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
不卡av电影在线播放| 老司机午夜精品99久久| 国产69精品久久777的优势| 久久综合久久99| 国产精品亚洲午夜一区二区三区| 337p粉嫩大胆噜噜噜噜噜91av| 激情五月激情综合网| 久久久久久久电影| 成人在线综合网| 亚洲视频一二三区| 欧美日韩精品三区| 国产一区二区三区免费在线观看| 国产午夜精品福利| 91网站在线观看视频| 亚洲mv在线观看| 精品久久久久久久久久久久久久久久久 | 91丝袜国产在线播放| 亚洲丝袜精品丝袜在线| 欧美日韩免费视频| 九一九一国产精品| 国产精品你懂的| 在线观看日产精品| 老司机精品视频导航| 国产精品系列在线| ...中文天堂在线一区| 色天使久久综合网天天| 亚洲v日本v欧美v久久精品| 精品日韩一区二区| 99精品视频在线播放观看| 日韩中文字幕麻豆| 中文字幕不卡在线观看| 欧美色老头old∨ideo| 国产黄人亚洲片| 亚洲一本大道在线| 久久久国产精品不卡| 欧美性猛片xxxx免费看久爱| 激情综合亚洲精品| 亚洲蜜臀av乱码久久精品| 欧美大片顶级少妇| 91蝌蚪porny| 九九视频精品免费| 亚洲已满18点击进入久久| 欧美精品一区男女天堂| 欧美最新大片在线看| 国产高清亚洲一区| 三级欧美在线一区| 一区二区三区中文字幕精品精品| 精品成人一区二区三区四区| 91国模大尺度私拍在线视频| 国产精品亚洲午夜一区二区三区| 五月婷婷综合激情| 亚洲视频一二三| 中文字幕精品一区二区精品绿巨人| 欧美高清精品3d| 一本久久精品一区二区| 丁香桃色午夜亚洲一区二区三区 | 午夜婷婷国产麻豆精品| 国产精品免费久久久久| 欧美电视剧免费全集观看| 在线视频亚洲一区| 不卡av在线网| 国产成人综合精品三级| 精品影院一区二区久久久| 亚洲国产日韩a在线播放性色| 国产精品另类一区| 亚洲国产电影在线观看| 26uuu精品一区二区三区四区在线| 欧美精品v日韩精品v韩国精品v| 成人免费观看av| 国产盗摄精品一区二区三区在线| 六月婷婷色综合| 欧美日韩亚洲国产综合| 在线精品视频免费播放| 97se亚洲国产综合自在线不卡| 成人激情小说乱人伦| 丰满少妇在线播放bd日韩电影| 国产盗摄女厕一区二区三区| 国产精华液一区二区三区| 国产永久精品大片wwwapp| 奇米亚洲午夜久久精品| 男男gaygay亚洲| 麻豆91免费观看| 久久er精品视频| 狠狠色狠狠色综合日日91app| 日本午夜精品视频在线观看| 美女在线一区二区| 久久成人麻豆午夜电影| 国模少妇一区二区三区| 精品一区二区三区在线观看| 国产精品99久久久久| 成人免费高清视频| 色婷婷av一区二区三区大白胸 | 五月激情六月综合| 全部av―极品视觉盛宴亚洲| 免费看日韩a级影片| 精品一区二区三区日韩| 国产白丝网站精品污在线入口| 成人黄色软件下载| 欧美在线不卡视频| 91精品黄色片免费大全| 精品国产乱码久久| 国产精品色哟哟网站| 亚洲精选视频在线| 日韩电影在线免费观看| 韩国三级电影一区二区| 成人av片在线观看| 欧美无人高清视频在线观看| 日韩欧美综合在线| 国产精品三级在线观看| 亚洲成人午夜电影| 裸体歌舞表演一区二区| 成人a级免费电影| 欧美久久久久久蜜桃| 国产日韩欧美综合在线| 一区二区三区欧美久久| 久久爱www久久做| aaa欧美色吧激情视频| 欧美日韩中字一区| 久久久久久久av麻豆果冻| 亚洲精品中文字幕乱码三区| 久久国产成人午夜av影院| 成人黄色国产精品网站大全在线免费观看 | 国产亚洲欧洲997久久综合 | 中文字幕日韩一区| 午夜精品爽啪视频| 国产盗摄精品一区二区三区在线| 在线欧美小视频| 久久久影院官网| 亚洲成a人v欧美综合天堂下载| 国产精品亚洲午夜一区二区三区| 在线视频国内一区二区| 国产欧美精品国产国产专区| 石原莉奈一区二区三区在线观看| 成人免费视频播放| 日韩一级片网站| 亚洲一区二区三区在线| 国产成人在线视频网站| 91麻豆精品国产91久久久久久久久 | 久久久久久久久久看片| 亚洲已满18点击进入久久| 国产凹凸在线观看一区二区| 欧美午夜电影在线播放| 成人欧美一区二区三区1314 | 亚洲国产经典视频| 久久99久久99| 欧美精品久久久久久久多人混战 | 一本色道久久综合精品竹菊| 久久久综合激的五月天| 奇米色一区二区| 欧美日产国产精品| 日韩美女精品在线| 成人网页在线观看| 久久久综合网站| 黑人巨大精品欧美一区| 日韩精品综合一本久道在线视频| 亚洲午夜视频在线观看| av一区二区久久| 国产清纯美女被跳蛋高潮一区二区久久w | 色系网站成人免费| 亚洲少妇30p| 波多野洁衣一区| 中文字幕人成不卡一区| 成人一区二区三区| 久久精品夜色噜噜亚洲a∨| 国模一区二区三区白浆| 精品国产乱码久久久久久久久| 免费看欧美美女黄的网站| 制服丝袜日韩国产| 视频一区二区中文字幕| 91精品综合久久久久久| 日韩中文字幕区一区有砖一区 | 欧美精品在线视频| 午夜视黄欧洲亚洲| 91精品欧美一区二区三区综合在| 亚洲一区二区在线免费观看视频| 国产视频一区二区三区在线观看| 国产一区二区免费在线| ww亚洲ww在线观看国产| 国产一区91精品张津瑜| 国产亚洲欧美色| 成人av免费在线观看| 亚洲精品日韩专区silk| 欧美唯美清纯偷拍| 日韩黄色一级片| 久久久久久久久伊人| 不卡区在线中文字幕| 日韩理论电影院| 欧美另类一区二区三区| 日本一道高清亚洲日美韩| 欧美电影免费观看高清完整版在线| 美脚の诱脚舐め脚责91 | 91丨porny丨户外露出| 亚洲精品久久嫩草网站秘色| 欧美日韩国产成人在线91| 青青草成人在线观看| 久久久久久免费网| 色欧美片视频在线观看| 另类人妖一区二区av| 久久久国产精华| 欧美午夜精品电影|