/**************************************************************************** * Copyright (c) 2004 DST Technologies Inc. All Rights Reserved. * * Module: dsthalir.c * * Description: DST UIRT INTERFACE IMPLEMENTATION * * * notes: JFET_20050527 * ***************************************************************************/ #include #include "dsthallocal.h" #include "dsthalcommon.h" #include "dstdduirt.h" #ifdef DMALLOC #include #endif /****************************************************************************** * Global variable declaration ******************************************************************************/ DS_U32 gIRDbgLvl = 1; //DHL_AV debug level /****************************************************************************** * Imported variable declaration ******************************************************************************/ /****************************************************************************** * Imported function declaration ******************************************************************************/ /****************************************************************************** * Local definitions ******************************************************************************/ /****************************************************************************** * Local typedefs ******************************************************************************/ /****************************************************************************** * Local variables declaration ******************************************************************************/ DS_PRIVATE IRCbFunc_t cbIRFunc = (IRCbFunc_t)0; /****************************************************************************** * Local function prototypes ******************************************************************************/ /******************************************************************************** FUNCTION: DHL_KeyPad_Init Purpose: IR(UIRT) Initilaization Arguments: Returns: *********************************************************************************/ DHL_RESULT DHL_KeyPad_Init(void) { DHL_RESULT dhlResult = DHL_OK; dhlResult = DD_KeyPad_Init(); if ( dhlResult != DHL_OK ) DHL_DbgPrintf(0,DHLDBG_IR," failure. (Line=%d)\n", __LINE__); return dhlResult; } /******************************************************************************** FUNCTION: DHL_KeyPad_Close Purpose: IR(UIRT) close Arguments: Returns: *********************************************************************************/ DHL_RESULT DHL_KeyPad_Close(void) { DHL_RESULT dhlResult = DHL_OK; dhlResult = DD_KeyPad_Close(); if ( dhlResult != DHL_OK ) DHL_DbgPrintf(0,DHLDBG_IR," failure. (Line=%d)\n", __LINE__); return dhlResult; } void DHL_KeyPad_SetScanTime(DS_U16 ScanTime) { DD_KeyPad_SetScanTime(ScanTime); } /******************************************************************************** FUNCTION: DHL_IR_Init Purpose: IR(UIRT) Initilaization Arguments: Returns: *********************************************************************************/ DHL_RESULT DHL_IR_Init(DHL_IR_FORMAT IrFormat) { DHL_RESULT dhlResult = DHL_OK; if ( IrFormat <= DHL_IR_START || IrFormat >= DHL_IR_END ) { DHL_DbgPrintf(0,DHLDBG_IR,"ERROR: LINE=%d\n", __LINE__); return DHL_FAIL_INVALID_PARAM; } dhlResult = DD_IR_Init(IrFormat); if ( dhlResult != DHL_OK ) DHL_DbgPrintf(0,DHLDBG_IR," failure. (Line=%d)\n", __LINE__); return dhlResult; } /******************************************************************************** FUNCTION: DHL_IR_Close Purpose: IR(UIRT) close Arguments: Returns: *********************************************************************************/ DHL_RESULT DHL_IR_Close(void) { DHL_RESULT dhlResult = DHL_OK; dhlResult = DD_IR_Close(); if ( dhlResult != DHL_OK ) DHL_DbgPrintf(0,DHLDBG_IR," failure. (Line=%d)\n", __LINE__); return dhlResult; } /******************************************************************************** FUNCTION: DHL_IR_SetIrFormat DHL_IR_SetCustomCode Purpose: DHL_IR_SetIrFormat: Set IR format, such as NEC, RC5, SONY and so on. DHL_IR_SetCustomCode: Set CustomCode of Remocon. Arguments: Returns: *********************************************************************************/ DHL_RESULT DHL_IR_SetIrFormat(DHL_IR_FORMAT IrFormat) { DHL_RESULT dhlResult = DHL_OK; dhlResult = DD_IR_SetFormat(IrFormat); if ( dhlResult != DHL_OK ) DHL_DbgPrintf(0,DHLDBG_IR," failure. (Line=%d)\n", __LINE__); return dhlResult; } DHL_RESULT DHL_IR_SetCustomCode(DS_U16 CustomCode) { DHL_RESULT dhlResult = DHL_OK; dhlResult = DD_IR_SetCustomCode(CustomCode); if ( dhlResult != DHL_OK ) DHL_DbgPrintf(0,DHLDBG_IR," failure. (Line=%d)\n", __LINE__); return dhlResult; } /******************************************************************************** FUNCTION: DHL_IR_SetCbFunc Purpose: IR(UIRT) Get Data Arguments: Returns: *********************************************************************************/ DHL_RESULT DHL_IR_SetCbFunc(IRCbFunc_t CBFuncPtr) { DHL_RESULT dhlResult = DHL_OK; if (!CBFuncPtr) { DHL_DbgPrintf(gIRDbgLvl,DHLDBG_IR,"ERROR: LINE=%d\n", __LINE__); return DHL_FAIL_INVALID_PARAM; } cbIRFunc = CBFuncPtr; return dhlResult; } void DHL_IR_SetScanTime(DS_U16 ScanTime) { DD_IR_SetScanTime(ScanTime); } void DHL_IR_Input(DS_U32 Code, int bPressed) { printf("|%s| Code: 0x%lx, bPress:%d\n", __FUNCTION__, Code, bPressed); if (cbIRFunc) (cbIRFunc)(0, Code, bPressed); } #if 0 /******************************************************************************** FUNCTION: DHL_UIRT_Initialize Purpose: UIRT Initialization - port open Arguments: uirtport Returns: *********************************************************************************/ DHL_RESULT DHL_UIRT_Initialize(DHL_UIRT_PORT uirtport) { DHL_RESULT dhlResult = DHL_OK; dhlResult = DD_UIRT_OpenEx(uirtport); return dhlResult; } /******************************************************************************** FUNCTION: DHL_UIRT_Close Purpose: UIRT Close - port close Arguments: uirtport Returns: *********************************************************************************/ DHL_RESULT DHL_UIRT_Close(DHL_UIRT_PORT uirtport) { DHL_RESULT dhlResult = DHL_OK; dhlResult = DD_UIRT_Close(uirtport); return dhlResult; } /******************************************************************************** FUNCTION: DHL_UIRT_IsXmitBusy Purpose: UIRT Close Arguments: uirtport Returns: *********************************************************************************/ DS_BOOL DHL_UIRT_XmitIsBusy(DHL_UIRT_PORT uirtport) { DHL_RESULT dhlResult = DHL_OK; DS_BOOL bBusy = FALSE; dhlResult = DD_UIRT_GetXmitBusy(uirtport,(DS_U32*)&bBusy); if(DHL_ERROR(dhlResult)) DHL_DbgPrintf(1,DHLDBG_IR," |error| %d \n",__LINE__); return bBusy; } /******************************************************************************** FUNCTION: DHL_UIRT_IsXmitBusy Purpose: UIRT Close Arguments: uirtport Returns: *********************************************************************************/ DHL_RESULT DHL_UIRT_XmitWriteBuf(DHL_UIRT_PORT uirtport, DS_U32 * buffer, DS_U32 lebgth) { DHL_RESULT dhlResult = DHL_OK; dhlResult = DD_UIRT_WriteBuf(uirtport, buffer, lebgth); return dhlResult; } /******************************************************************************** FUNCTION: DHL_UIRT_SetXmitClkDiv Purpose: UIRT Close Arguments: uirtport Returns: *********************************************************************************/ DHL_RESULT DHL_UIRT_SetXmitClkDiv(DHL_UIRT_PORT uirtport, DS_U32 xclkdiv) { DHL_RESULT dhlResult = DHL_OK; dhlResult = DD_UIRT_SetXmitClkDiv(uirtport, xclkdiv); return dhlResult; } /******************************************************************************** FUNCTION: DHL_UIRT_SetXmitModParams Purpose: Set register UIRT_XMIT_MOD_CNTL Arguments: uirtport xcd - transmiter carrier divider bnonmodulate - non-modulated Returns: note: XMIT_CARRIER_DIV 11:0 0x4b0 Clock Divisor for transmitter carrier frequency Number of 48MHz clocks that are in the period of the carrier signal Default is 40 kHz. XMIT_CARRIER_HI 26:16 0x12c Number of 48MHz clocks that the carrier signal is high Default is 25% duty cycle XMIT_MOD_EN 28 0x1 Enable Modulation of the transmitted signal with the carrier signal *********************************************************************************/ DHL_RESULT DHL_UIRT_SetXmitCarrierDivider(DHL_UIRT_PORT uirtport, DS_U32 CarrierFreq, DS_BOOL bmodulate) { DHL_RESULT dhlResult = DHL_OK; DS_U32 mod_param = 0; DS_U32 xmit_carrier_divider = 0; DS_U32 xmit_carrier_hi = 0x12c /*300*/; DS_U32 xmit_mode_en = 0x0; if(bmodulate) xmit_mode_en = 0x1; xmit_carrier_divider = 48000000/CarrierFreq; printf("carrier_divider = %d\n",xmit_carrier_divider); mod_param = (xmit_mode_en<<28) | (xmit_carrier_hi<<16) | xmit_carrier_divider ; dhlResult = DD_UIRT_SetXmitModParams( uirtport, mod_param ); return dhlResult; } /******************************************************************************** FUNCTION: DHL_UIRT_XmitAbortTransmit Purpose: UIRT Tx stop the data transmit Arguments: uirtport Returns: *********************************************************************************/ DHL_RESULT DHL_UIRT_XmitAbortTransmit(DHL_UIRT_PORT uirtport) { DHL_RESULT dhlResult = DHL_OK; dhlResult = DD_UIRT_XmitAbortTransmit(uirtport); return dhlResult; } #endif ////////////////////////////////////////////////////////////////////////////////// //TEST FOR UIRT RX void start_ir(void) { DHL_IR_Init(DHL_IR_NEC); } void stop_ir(void) { DHL_IR_Close(); } //end of file