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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? loader.c

?? 本程序為ST公司開發的源代碼
?? 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一区二区三区免费野_久草精品视频
99视频一区二区三区| 黄色资源网久久资源365| 国产偷v国产偷v亚洲高清| 欧美一级电影网站| 欧美日韩精品欧美日韩精品 | 亚洲一区二区三区四区中文字幕| 国产精品白丝在线| 综合激情网...| 亚洲一区中文在线| 日韩1区2区日韩1区2区| 久久精品国产**网站演员| 国产在线播精品第三| 国产成人亚洲精品青草天美| 国产老肥熟一区二区三区| 成人中文字幕合集| 91麻豆文化传媒在线观看| 欧美日免费三级在线| 717成人午夜免费福利电影| 欧美videossexotv100| 久久精品一区二区三区不卡| 亚洲欧美在线另类| 首页综合国产亚洲丝袜| 精品一区二区三区视频在线观看 | 中文字幕亚洲视频| 亚洲综合色丁香婷婷六月图片| 偷窥少妇高潮呻吟av久久免费| 美国十次综合导航| 成人毛片视频在线观看| 欧美在线观看视频一区二区三区| 宅男在线国产精品| 国产精品久久久久久久久搜平片| 18欧美亚洲精品| 日韩av在线播放中文字幕| 国产精品91一区二区| 欧美亚洲尤物久久| 国产亚洲一区二区在线观看| 亚洲欧美国产高清| 久久99精品视频| 色婷婷亚洲综合| 欧美精品一区二区久久久| 一区二区三区四区五区视频在线观看| 午夜av一区二区三区| 丁香激情综合国产| 制服.丝袜.亚洲.中文.综合| 中文字幕日韩一区| 精品一区二区三区不卡| 在线观看免费一区| 国产精品天天看| 日本成人在线看| 日本精品一区二区三区高清 | 日韩有码一区二区三区| 懂色中文一区二区在线播放| 51精品视频一区二区三区| 亚洲天堂久久久久久久| 激情综合网av| 日韩欧美一区二区视频| 亚洲综合精品久久| av不卡免费电影| 久久精品人人做人人爽人人| 蜜桃视频在线观看一区| 欧美一区三区二区| 亚洲在线视频网站| 日本高清免费不卡视频| 国产精品久久久久久久久晋中 | 国产精品亚洲午夜一区二区三区| 欧美日韩国产一级片| 一区二区三区视频在线看| 不卡一区二区在线| 中文子幕无线码一区tr| 国产精品一区免费在线观看| 精品国产乱码久久久久久影片| 天堂蜜桃一区二区三区| 欧美美女网站色| 午夜精品久久久久久| 欧美日韩国产电影| 日欧美一区二区| 欧美老年两性高潮| 日韩精品1区2区3区| 欧美一区二区视频在线观看2020| 午夜精品影院在线观看| 欧美日韩免费一区二区三区 | 一二三四社区欧美黄| 色一区在线观看| 亚洲综合偷拍欧美一区色| 欧美天堂亚洲电影院在线播放| 亚洲五码中文字幕| 欧美群妇大交群的观看方式| 日日骚欧美日韩| 91精品国产综合久久精品图片| 日本在线播放一区二区三区| 日韩视频国产视频| 国产精品资源站在线| 中文字幕亚洲不卡| 欧美日韩高清一区二区三区| 蜜臀av性久久久久蜜臀aⅴ流畅 | 在线观看亚洲成人| 日本美女一区二区三区视频| 久久精品亚洲国产奇米99| 成人国产精品免费观看| 亚洲国产一区二区在线播放| 91麻豆精品国产自产在线观看一区| 免费在线观看视频一区| 国产日产欧美精品一区二区三区| 99在线热播精品免费| 亚洲.国产.中文慕字在线| 精品国产一区二区精华| 成人短视频下载| 视频在线观看一区二区三区| 久久先锋影音av鲁色资源网| 色综合久久综合中文综合网| 免费成人在线网站| 亚洲人成网站精品片在线观看| 69堂精品视频| 色综合久久久久网| 久久99精品国产麻豆不卡| 亚洲欧美在线aaa| 欧美成人性战久久| 欧亚一区二区三区| 国产乱码一区二区三区| 亚洲h动漫在线| 国产精品不卡一区二区三区| 欧美成人精品二区三区99精品| 91亚洲永久精品| 国产在线视频一区二区三区| 亚洲一卡二卡三卡四卡五卡| 中国av一区二区三区| 欧美一级淫片007| 色综合色综合色综合色综合色综合 | 91视频免费观看| 激情欧美日韩一区二区| 亚洲电影一级黄| 亚洲欧美一区二区三区孕妇| 337p日本欧洲亚洲大胆色噜噜| 欧美视频你懂的| 色综合天天性综合| 丁香激情综合五月| 国产精品白丝jk黑袜喷水| 久久精品国产免费看久久精品| 午夜精品久久久久久久99樱桃| 综合激情成人伊人| 国产精品伦一区二区三级视频| 久久一区二区三区四区| 欧美群妇大交群中文字幕| 精品视频1区2区| 欧美在线视频日韩| 欧洲亚洲国产日韩| 日本韩国欧美国产| 色狠狠av一区二区三区| 色综合咪咪久久| 在线观看www91| 欧美亚州韩日在线看免费版国语版| 91亚洲精品一区二区乱码| 成人一区二区三区在线观看| 国产精品羞羞答答xxdd| 国产一区二区看久久| 国产麻豆精品95视频| 国产又粗又猛又爽又黄91精品| 黑人巨大精品欧美黑白配亚洲| 久久99国产乱子伦精品免费| 黄色小说综合网站| 国产精品99久久不卡二区| 成人午夜电影网站| 成人涩涩免费视频| 91亚洲精品久久久蜜桃网站| 在线影视一区二区三区| 欧美午夜一区二区三区| 欧美日本韩国一区二区三区视频 | 色老汉一区二区三区| 色婷婷精品大视频在线蜜桃视频| 在线精品视频一区二区三四| 欧美日韩国产a| 久久亚洲精品小早川怜子| 国产精品国产精品国产专区不蜜 | 麻豆91在线播放免费| 国模一区二区三区白浆| 国产精品一区免费视频| 不卡av免费在线观看| 精品婷婷伊人一区三区三| 日韩欧美国产午夜精品| 日本一区二区视频在线| 亚洲电影一区二区| 狠狠色丁香婷综合久久| 91在线精品一区二区三区| 欧美日韩一区二区三区免费看| 日韩欧美不卡一区| 国产精品无遮挡| 亚洲国产精品久久人人爱蜜臀| 九九视频精品免费| 972aa.com艺术欧美| 欧美一区二区三区婷婷月色| 国产肉丝袜一区二区| 亚洲成人av一区二区三区| 国产精品99久久久久久久vr| 欧美日韩午夜影院| 国产亚洲综合性久久久影院| 亚洲国产sm捆绑调教视频 | 免费观看一级欧美片| 91视视频在线观看入口直接观看www | 亚洲视频在线观看三级| 蜜桃av一区二区在线观看|