T168_Backup\T168_111\appl\Function文件:Function.c

/******************************************************************************
 *                                                                            *
 *                         M O D U L E   D E F I N E                          *
 *                                                                            *
 ******************************************************************************/

#define FUNCTION_C

/******************************************************************************
 *                                                                            *
 *        C O M P I L E R   D E F I N E D   I N C L U D E   F I L E S         *
 *                                                                            *
 ******************************************************************************/

/* None */

/******************************************************************************
 *                                                                            *
 *            U S E R   D E F I N E D   I N C L U D E   F I L E S             *
 *                                                                            *
 ******************************************************************************/

#include "Common.h"
#include "XCore.h"
#include "XLED.h"
#include "XKey.h"
#include "XTimer.h"
#include "XProFile.h"
#include "XDisplay.h"
#include "Function.h"

/******************************************************************************
 *                                                                            *
 *                         L O C A L   D E F I N E S                          *
 *                                                                            *
 ******************************************************************************/

/* None */

/******************************************************************************
 *                                                                            *
 *                        L O C A L   T Y P E D E F S                         *
 *                                                                            *
 ******************************************************************************/

/* None */

/******************************************************************************
 *                                                                            *
 *             L O C A L   F U N C T I O N   P R O T O T Y P E S              *
 *                                                                            *
 ******************************************************************************/

/* None */

/******************************************************************************
 *                                                                            *
 *    L O C A L   I N I T I A L I Z E D   D A T A   D E F I N I T I O N S     *
 *                                                                            *
 ******************************************************************************/

/* None */

/******************************************************************************
 *                                                                            *
 *    L O C A L   U N I T I A L I Z E D   D A T A   D E F I N I T I O N S     *
 *                                                                            *
 ******************************************************************************/

STATIC BOOL MemoryFail;


STATIC VOID InsertDummyJob(VOID)
{
    _PrintCfg *pFuncCfg = GrabPrintConfig();
    if (GetJobState() == JOB_NULL)
        FeedBatch(0, pFuncCfg, TRUE, _NULL);
}

STATIC VOID ScanPeelSensorPauseJob(VOID)
{
    STATIC BOOL Pause = FALSE;
    STATIC WORD SensorNoise = 0;

    if (Pause)
    {
        if (!PeelSensorSignal())
            SensorNoise += 1;
        else
            SensorNoise = 0;

        if (SensorNoise >= (50 / PERIOD_TIMES))    // 50 ms
        {
            SensorNoise = 0;
            Pause = FALSE;
            PrinterStart();
        }
    }
    else
    {
        if (PeelSensorSignal())
            SensorNoise += 1;
        else
            SensorNoise = 0;

        if (SensorNoise >= (50 / PERIOD_TIMES))    // 50 ms
        {
            SensorNoise = 0;
            Pause = TRUE;
            PrinterPause();
        }
    }
}

VOID InitialFunction(VOID)
{
    FLOAT data;

    InitialFuncKey();

#if defined(PS2_MODEL) || defined(USB_HOST_MODEL)
    InitialFuncKB();
#endif

#if defined(GPIO_MODEL)
    InitialFuncIO();
#endif

#if defined(CARRIAGE_OPEN_MODEL)
    if (GetProfileInt("OPEN COVER MANUAL RECOVER", &data))
    {
        if ((BOOL)data == TRUE)
            SetCarriageOpenCallback(InsertDummyJob);
    }
#endif

    if (GetProfileInt("PEEL SENSOR PAUSE", &data))
    {
        if ((BOOL)data == TRUE)
            StartPeriodFunc(ScanPeelSensorPauseJob);
    }

    MemoryFail = FALSE;
}
#if defined(N3290)
STATIC UINT AppCheckSum=0;
STATIC UINT BootCheckSum=0;
UINT GetAppCheck(VOID)
{
        return AppCheckSum;
}
UINT GetCalculateCheck(VOID)
{
        UINT ret=0,i=0,Applen=128*1024+10,len=0,j=0,data=0;

        SPI_SwitchToFlash();
        outpw(REG_SPI0_SSR, inpw(REG_SPI0_SSR) | 0x01);    // CS0
        
        outpw(REG_SPI0_TX0, 03);
        spiTxLen(0, 0, 8);
        spiActive(0);

        outpw(REG_SPI0_TX0, 128*1024);
        spiTxLen(0, 0, 24);
        spiActive(0);

                spiTxLen(0, 0, 8);
        for(j=1,i=128*1024;i<Applen;i++)
        {
                outpb(REG_SPI0_TX0, 0xff);
                spiActive(0);
                data=inpb(REG_SPI0_RX0);
                ret+=data;
                if(i<128*1024+8&&i>=128*1024+4)
                {
                       len+=(data*j);
                       j<<=8;
                 }
                else if(i==128*1024+8)
                       Applen=len+8+128*1024;
        }
        return ret;
}
VOID CalculateCheckSumInit(VOID)
{
        UINT Bootlen=0x20,i=0,Applen=128*1024+10,j=0,data=0,chackmun=0;
        outpw(REG_SPI0_SSR, inpw(REG_SPI0_SSR) | 0x01);    // CS0
        
        outpw(REG_SPI0_TX0, 03);
        spiTxLen(0, 0, 8);
        spiActive(0);

        outpw(REG_SPI0_TX0, 0);
        spiTxLen(0, 0, 24);
        spiActive(0);

         spiTxLen(0, 0, 8);
        for(i=0;i<Bootlen;i++)
        {
               outpb(REG_SPI0_TX0, 0xff);
                spiActive(0);
                data=inpb(REG_SPI0_RX0);
                BootCheckSum+=data;
                if(i<12&&i>=8)
                       j+=(data<<((i-8)*8));
                else if(i==12)
                       Bootlen=j+0x38;
        }
    
    outpw(REG_SPI0_SSR, inpw(REG_SPI0_SSR) & 0xfe);    // CS0

    outpw(REG_SPI0_SSR, inpw(REG_SPI0_SSR) | 0x01);    // CS0
    outpw(REG_SPI0_TX0, 03);
        spiTxLen(0, 0, 8);
        spiActive(0);

        outpw(REG_SPI0_TX0, 128*1024);
        spiTxLen(0, 0, 24);
        spiActive(0);

         spiTxLen(0, 0, 8);
         for(j=1,i=128*1024;i<128*1024+4;i++,j<<=8)
         {
                outpb(REG_SPI0_TX0, 0xff);
                spiActive(0);
                data=inpb(REG_SPI0_RX0);
                chackmun+=data;
                AppCheckSum+=(data*j);
         }
         for ( ; i <128*1024+8 ; i++ )
         {
                outpb(REG_SPI0_TX0, 0xff);
                spiActive(0);
                chackmun+=inpb(REG_SPI0_RX0);
         }
         AppCheckSum+=chackmun;
         outpw(REG_SPI0_SSR, inpw(REG_SPI0_SSR) & 0xfe);    
}
#endif
DWORD CalculateCheckSum(VOID)
{
    DWORD CheckSum;
    INT i;

    CheckSum = 0;

#if defined(AT91SAM9260)
        
    for (i = 0; i < BOOT_CODE_LEN; i++)
        CheckSum += *((BYTE*)BOOT_CODE_AREA_ADDR + i);

    for (i = 0; i < APP_CODE_LEN; i++)
        CheckSum += *((BYTE*)APP_CODE_AREA_ADDR + i);
#elif defined(N3290)
    CheckSum=AppCheckSum+BootCheckSum;
#endif


    return CheckSum;
}

FLOAT CalculateLabelSize(_PrintCfg *PrtCfg)
{
    FLOAT fLabelSize;

    if (PrtCfg->SensorMode == GAP_MODE)
        fLabelSize = PrtCfg->fPaperSize + PrtCfg->fGapSize;
    else if (PrtCfg->SensorMode == BLINE_MODE)
        fLabelSize = PrtCfg->fPaperSize + PrtCfg->fBlineSize;
    else
        fLabelSize = PrtCfg->fPaperSize;

    return fLabelSize;
}

// ch_20220409
FLOAT CalLabelSizeWithCalRslt(_CalResult *CalRslt)
{
    FLOAT fLabelSize;

    if (CalRslt->SensorMode == GAP_MODE)
        fLabelSize = CalRslt->fPaperSize + CalRslt->fGapSize;
    else if (CalRslt->SensorMode == BLINE_MODE)
        fLabelSize = CalRslt->fPaperSize + CalRslt->fBlineSize;
    else
        fLabelSize = CalRslt->fPaperSize;

    return fLabelSize;
}

VOID ResetHeadPosition(VOID)
{
    _PrintCfg *pPosCfg = GrabPrintConfig();
    _WorkJob WorkJob;
//sysprintf("CogTJob...1\n");
    ConfigToWorkJob(&WorkJob, pPosCfg);
    pPosCfg->AdjustHead = GetShiftDis(&WorkJob);
    pPosCfg->OverHead   = 0;
}

VOID CutPaper(VOID)
{
    
    _PrintCfg *pCutCfg = GrabPrintConfig();
    _eCutterState *CutterState;
    BOOL Direction = CUT_DIR_FORWARD;

    WaitWorkJobEnd();

    SetJobMonitor(MONITOR_CUTTING);

#if defined(TDP225) || defined(TTP225) || defined(TTP323)
    Direction = pCutCfg->CutterBack ? CUT_DIR_FORWARD : CUT_DIR_BACKWARD;
#endif

    CutterState = CutterApplication(Direction);
    while (*CutterState == CUTTER_CUTTING)
        NutSleep(10);

    if (*CutterState == CUTTER_ERROR)
        CutterError();

    SetJobMonitor(MONITOR_IDLE);
}

VOID PrinterPause(VOID)
{
    INT imask = DisableInterrupt(INTERRUPT_MASK);
    _ePolyLEDStat LEDState = 0; // ch_20220608

    if (!GetJobErrorState())
    {
        StopJobManager();

#if defined(MONO_LED)
        StartPeriodFunc(FlashLED2);
#elif defined(POLY_LED)
        ///
        // ch_20220609
//sysprintf("P_P\n");         
        
        LEDState = GetLEDStat();
//sysprintf("LED_S_%d\n", LEDState);
        if (LED_FLASH_RED_BLUE == LEDState)
            CancelPeriodFunc(FlashBlueRedLED);
        else if (LED_FLASH_RED_BLUE_FAST == LEDState)
            CancelPeriodFunc(FlashBlueRedLEDFast);                
        SetLEDStat(LED_FLASH_BLUE);
        ///
        StartPeriodFunc(FlashGreenLED);
#endif

#if defined(LCD_MODEL)
        SetDisplayStatus(DIS_PAUSE);
#endif
    }

    EnableInterrupt(imask);
}

VOID PrinterStart(VOID)
{
    INT imask = DisableInterrupt(INTERRUPT_MASK);

#ifdef DEBUG_PRNT
sysprintf("Enter PrinterStart...\n"); // ch_20211215
#endif

    StartJobManager();

#if defined(MONO_LED)
    CancelPeriodFunc(FlashLED2);
    ShowLED(HID_LED_IDLE, HID_LED_ON, HID_LED_IDLE);
#elif defined(POLY_LED)

    CancelPeriodFunc(FlashGreenLED);
    ResetPrevLEDStat(); // ch_20220609
    SetLEDStat(LED_ON_BLUE); // ch_20220609
    ShowLED(HID_LED_GREEN);
#endif
#if defined(LCD_MODEL)
    ClrDisplayStatus(DIS_PAUSE);
#endif

    EnableInterrupt(imask);
}

VOID PrinterReboot(VOID)
{
#ifdef DEBUG_PRNT
sysprintf("Enter PrinterReboot()...\n"); // ch_20211211
#endif

    DisableInterrupt(INTERRUPT_MASK);
    CloseStrongCurrent();
    SaveVarBank();
DelayTime(50000000); // ch_20220119    
    ProcessorReset();
}

VOID HexDumpMode(VOID)
{
    BOOL KeyFunc = StopKeyFunc();
    DumpText(NULL);
    StartKeyFunc(KeyFunc);
}

VOID ErasingFile(_eFileDevice device, CHAR *filename)
{

#if defined(LCD_MODEL)
    SetDisplayStatus(DIS_ERASING);
#endif

#if defined(MONO_LED)
    ShowLED(HID_LED_IDLE, HID_LED_IDLE, HID_LED_ON);
#elif defined(POLY_LED)
    ShowLED(HID_LED_ORANGE);
#endif

    DeleteFile(device, filename);

#if defined(MONO_LED)
    ShowLED(HID_LED_IDLE, HID_LED_IDLE, HID_LED_OFF);
#elif defined(POLY_LED)
    ShowLED(HID_LED_GREEN);
#endif

#if defined(LCD_MODEL)
    ClrDisplayStatus(DIS_ERASING);
#endif

}

VOID MemoryFailed(VOID)
{
    MemoryFail = TRUE;

#if defined(LCD_MODEL)
    SetDisplayStatus(DIS_OUT_OF_MEMORY);
#endif

    StopKeyFunc();

    while (!GetKey(FEED_KEY))
    {
#if defined(MONO_LED)
        CancelPeriodFunc(FlashLED2);
        ShowLED(HID_LED_IDLE, HID_LED_OFF, HID_LED_ON);
#elif defined(POLY_LED)
        CancelPeriodFunc(FlashGreenLED);
        ShowLED(HID_LED_RED);
#endif
    }

    StartKeyFunc(TRUE);

#if defined(MONO_LED)
    ShowLED(HID_LED_IDLE, HID_LED_ON, HID_LED_OFF);
#elif defined(POLY_LED)
    ShowLED(HID_LED_GREEN);
#endif

#if defined(LCD_MODEL)
    ClrDisplayStatus(DIS_OUT_OF_MEMORY);
#endif

    MemoryFail = FALSE;
}

#if defined(__HITACHI__)
#pragma inline(IsMemoryFailed)
#endif

BOOL IsMemoryFailed(VOID)
{
    return MemoryFail;
}

VOID SetSerialPort(LONG BaudRate, SHORT Data, CHAR Parity, SHORT Stop)
{
    _PrintCfg *pPortCfg = GrabPrintConfig();

    if (BaudRate == 1200)
        pPortCfg->UartSetting.Baud = UART_BAUD_1200;
    else if (BaudRate == 2400)
        pPortCfg->UartSetting.Baud = UART_BAUD_2400;
    else if (BaudRate == 4800)
        pPortCfg->UartSetting.Baud = UART_BAUD_4800;
    else if (BaudRate == 9600)
        pPortCfg->UartSetting.Baud = UART_BAUD_9600;
    else if (BaudRate == 19200)
        pPortCfg->UartSetting.Baud = UART_BAUD_19200;
    else if (BaudRate == 38400)
        pPortCfg->UartSetting.Baud = UART_BAUD_38400;
    else if (BaudRate == 57600)
        pPortCfg->UartSetting.Baud = UART_BAUD_57600;
    else if (BaudRate == 115200)
        pPortCfg->UartSetting.Baud = UART_BAUD_115200;

    if (Data == 7)
        pPortCfg->UartSetting.DataBits = UART_DATA_7;
    else if (Data == 8)
        pPortCfg->UartSetting.DataBits = UART_DATA_8;

    if (Parity == 'N')
        pPortCfg->UartSetting.Parity = UART_PARITY_NONE;
    else if (Parity == 'O')
        pPortCfg->UartSetting.Parity = UART_PARITY_ODD;
    else if (Parity == 'E')
        pPortCfg->UartSetting.Parity = UART_PARITY_EVEN;

    if (Stop == 1)
        pPortCfg->UartSetting.Stop = UART_STOP_ONE;
    else if (Stop == 2)
        pPortCfg->UartSetting.Stop = UART_STOP_TWO;

    UartSetting(pPortCfg->UartSetting);
}

ULONG GetNetworkIP(INT item)
{
#if defined(NUTNET)
    _PrintCfg *pNetCfg = GrabPrintConfig();

    ULONG ip_addr = pNetCfg->confnet.cdn_cip_addr;
    ULONG ip_mask = pNetCfg->confnet.cdn_ip_mask;
    ULONG gateway = pNetCfg->confnet.cdn_gateway;

    if ((ip_addr & ip_mask) == 0)    // Configuration from DHCP
        NetQueryIP(&ip_addr, &ip_mask, &gateway);

    if (item == ITEM_IP_ADDRESS)
        return ip_addr;
    if (item == ITEM_SUBNET_MASK)
        return ip_mask;
    if (item == ITEM_GATEWAY)
        return gateway;
#endif
    return 0L;
}

Function.h   /

#ifndef FUNCTION_H

/******************************************************************************
 *                                                                            *
 *                         M O D U L E   D E F I N E                          *
 *                                                                            *
 ******************************************************************************/

#define FUNCTION_H
    
/******************************************************************************
 *                                                                            *
 *        C O M P I L E R   D E F I N E D   I N C L U D E   F I L E S         *
 *                                                                            *
 ******************************************************************************/

/* None */

/******************************************************************************
 *                                                                            *
 *            U S E R   D E F I N E D   I N C L U D E   F I L E S             *
 *                                                                            *
 ******************************************************************************/

#include "XPrtEng.h"
#include "XVarBank.h"
#include "FuncType.h"

#ifdef __cplusplus
extern "C" {            /* Assume C declarations for C++ */
#endif    /* __cplusplus */

/******************************************************************************
 *                                                                            *
 *                        G L O B A L   D E F I N E S                         *
 *                                                                            *
 ******************************************************************************/

/* None */

/******************************************************************************
 *                                                                            *
 *                 S T R U C T U R E   D E F I N I T I O N S                  *
 *                                                                            *
 ******************************************************************************/

/* None */

/******************************************************************************
 *                                                                            *
 *    G L O B A L   V A R I A B L E S   -   N O   I N I T I A L I Z E R S     *
 *                                                                            *
 ******************************************************************************/

/* None */

/******************************************************************************
 *                                                                            *
 *       G L O B A L   V A R I A B L E S   -   I N I T I A L I Z E R S        *
 *                                                                            *
 ******************************************************************************/

/* None */

/******************************************************************************
 *                                                                            *
 *                   F U N C T I O N   P R O T O T Y P E S                    *
 *                                                                            *
 ******************************************************************************/

//--- Function ---//
VOID InitialFunction(VOID);
DWORD CalculateCheckSum(VOID);
FLOAT CalculateLabelSize(_PrintCfg *);
FLOAT CalLabelSizeWithCalRslt(_CalResult *); // ch_20220409
VOID ResetHeadPosition(VOID);
VOID CutPaper(VOID);
VOID PrinterPause(VOID);
VOID PrinterStart(VOID);
VOID PrinterReboot(VOID);
VOID HexDumpMode(VOID);
VOID ErasingFile(_eFileDevice, CHAR *);
VOID MemoryFailed(VOID);
BOOL IsMemoryFailed(VOID);
VOID SetSerialPort(LONG, SHORT, CHAR, SHORT);
ULONG GetNetworkIP(INT);

//--- FuncJob ---//
VOID ConfigToWorkJob(_WorkJob *, _PrintCfg *);
UINT MotorMove(LONG, _PrintCfg *, _eMotorDir, XCALLBACK);
UINT FeedBatch(LONG, _PrintCfg *, BOOL, XCALLBACK);
UINT PrintBatch(UINT, LONG, _PrintCfg *, _ImgBuf *, BOOL, INT, INT, INT, XCALLBACK);
UINT Calibration(_PrintCfg *, BOOL, INT, INT);

//--- FuncMedia ---//
VOID PaperHome(_PrintCfg *);
BOOL DetectSensorInten(_PrintCfg *, BOOL, BOOL, INT, INT);
BOOL DetectGapInten(_PrintCfg *, BOOL);
BOOL DetectContinuousInten(_PrintCfg *);
BOOL DetectContinuousIntenBm(_PrintCfg *);
BOOL DetectLabelSize(_PrintCfg *, LONG, _ePrintOutMode);

//--- FuncKey ---//
VOID InitialFuncKey(VOID);
VOID KeyFuncSetting(INT, _KeySetting *);
VOID CheckPowerOnKey(VOID);

//--- FuncKB ---//
VOID InitialFuncKB(VOID);
VOID EntryInputKB(CHAR *, CHAR *, BOOL, INT);
VOID LeaveInputKB(VOID);

//--- FuncIO ---//
VOID InitialFuncIO(VOID);
VOID GPInFuncSetting(INT, _GPISetting *);
VOID GPOutFuncSetting(INT, _GPOSetting *);

VOID CalculateCheckSumInit(VOID);
VOID SPI_SwitchToFlash(VOID);
#ifdef __cplusplus
}                       /* End of extern "C" { */
#endif    /* __cplusplus */

#endif    

  • 18
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值