Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
led.c
Package: ST_5105DTV.rar [view]
Upload User: fy98168
Upload Date: 2015-06-26
Package Size: 13771k
Code Size: 16k
Category:
DVD
Development Platform:
C/C++
- /****************************************************************************
- ** Notice: Copyright (c) 2007 Keybridge Co.Ltd. - All Rights Reserved
- **
- ** File Name: led.C
- **
- **
- **
- **
- ** Description:
- ** GPIO Driver source file.
- **
- ****************************************************************************/
- #include "stpio.h"
- #include "sti5105.h"
- #include "stddefs.h"
- #include "gendef.h"
- #include "rckeymap.h"
- #include "timeclk.h"
- #include "Sr_time.h"
- #include "led.h"
- #include "kb_machblue_client_task.h"
- static volatile unsigned int *PIO0_BASE = (volatile unsigned int *)0x20820000;
- static volatile unsigned int *PIO1_BASE = (volatile unsigned int *)0x20821000;
- static volatile unsigned int *PIO2_BASE = (volatile unsigned int *)0x20822000;
- static volatile unsigned int *PIO3_BASE = (volatile unsigned int *)0x20823000;
- #define PIO_OUT 0
- #define PIO_OUT_SET (1 << 2)
- #define PIO_OUT_CLR (2 << 2)
- #define PIO_IN (4 << 2)
- #define PIO_BIT_0 1
- #define PIO_BIT_1 2
- #define PIO_BIT_2 4
- #define PIO_BIT_3 8
- #define PIO_BIT_4 16
- #define PIO_BIT_5 32
- #define PIO_BIT_6 64
- #define PIO_BIT_7 128
- #define PIO0(x, value)
- {
- if (value)
- PIO0_BASE[PIO_OUT_CLR] &= ~(1 << x);
- else
- PIO0_BASE[PIO_OUT_CLR] |= (1 << x);
- }
- #define PIO1(x, value)
- {
- if (value)
- PIO1_BASE[PIO_OUT_CLR] &= ~(1 << x);
- else
- PIO1_BASE[PIO_OUT_CLR] |= (1 << x);
- }
- #define PIO2(x, value)
- {
- if (value)
- PIO2_BASE[PIO_OUT_CLR] &= ~(1 << x);
- else
- PIO2_BASE[PIO_OUT_CLR] |=(1 << x);
- }
- #define PIO3(x, value)
- {
- if (value)
- PIO3_BASE[PIO_OUT_CLR] &= ~(1 << x);
- else
- PIO3_BASE[PIO_OUT_CLR] |= (1 << x);
- }
- #define FPIO_CLK(value) PIO2(7, value)
- #define FPIO_DATA(value) PIO0(1, value)
- #define FPIO_COM0(value) PIO2(2, value)
- #define FPIO_COM1(value) PIO2(3, value)
- #define FPIO_COM2(value) PIO2(5, value)
- #define FPIO_COM3(value) PIO2(6, value)
- #define FPIO_LOCK(value) PIO3(4, value)
- //#define FPIO_POWER(value) PIO3(4, value)
- //#define FPIO_KYESCAN PIO_BIT_7
- //#define READ_KEY_BITS (*(PIO3_BASE + PIO_IN) & FPIO_KYESCAN)
- #define READ_KEY_BITS (*(PIO0_BASE + 4) & PIO_BIT_6)
- #define KEYBOARD_BOUNCE_SETTLE_TIME (ST_GetClocksPerSecond()/ 10) /* 100 mSec */
- #define KEYBOARD_SCAN_LINE_SETTLE_TIME (ST_GetClocksPerSecond() / 1000) /* 1 mSec */
- #define KEYBOARD_SCAN_FREQ 100 /*** 1000s/(5ms*100) = 2Hz ***/
- static UINT32 LED_TaskID;
- void FP_KeyCheck(void);
- //static char iLedData[4] = {0xBF, 0xBF, 0xBF, 0xBF};
- static char iLedData[4] = {0xC0, 0xC0, 0xC0, 0xC0};
- unsigned short KeyBuffer = 0;
- #define LED_DISP_CHAR_MAX 32
- T_LED_CODE LED_CODE[LED_DISP_CHAR_MAX] =
- {
- {'M', 0xff}, /* 00 */
- {'1', 0xF9}, /* 01 */
- {'2', 0xA4}, /* 02 */
- {'3', 0xB0}, /* 03 */
- {'4', 0x99}, /* 04 */
- {'5', 0x92}, /* 05 */
- {'6', 0x82}, /* 06 */
- {'7', 0xD8}, /* 07 */
- {'8', 0x80}, /* 08 */
- {'9', 0x90}, /* 09 */
- {'0', 0xC0}, /* 10 */
- {'A', 0x88}, /* 11 */
- {'b', 0x83}, /* 12 */
- {'C', 0xC6}, /* 13 */
- {'c', 0xA7}, /* 14 */
- {'d', 0xA1}, /* 15 */
- {'E', 0x86}, /* 16 */
- {'F', 0x8e}, /* 17 */
- {'H', 0x89}, /* 18 */
- {'h', 0x8B}, /* 19 */
- {'J', 0xf0}, /* 20 */
- {'L', 0xc7}, /* 21 */
- {'n', 0xAB}, /* 22 */
- {'O', 0xc0}, /* 23 */
- {'o', 0xA3}, /* 24 */
- {'P', 0x8C}, /* 25 */
- {'q', 0x98}, /* 26 */
- {'r', 0xaf}, /* 27 */
- {'t', 0x87}, /* 28 */
- {'U', 0xc1}, /* 29 */
- {'v', 0xE3}, /* 30 */
- {'-', 0xBF} /* 31 */
- };
- void LED_PioComSet(UINT8 comNum, char value)
- {
- switch (comNum)
- {
- case 0:
- FPIO_COM0(value);
- break;
- case 1:
- FPIO_COM1(value);
- break;
- case 2:
- FPIO_COM2(value);
- break;
- case 3:
- FPIO_COM3(value);
- break;
- default:
- break;
- }
- }
- /*=========================================================================
- * PROTOTYPE :
- * void LED_LedGreen(int flag)
- *
- * PURPOSE:
- * on/of the green led
- *==========================================================================*/
- void LED_LedGreen(int flag)
- {
- if (flag)
- {
- /* 亮*/
- FPIO_LOCK(1);
- //PIO3_BASE[8] |= 4;
- }
- else
- {
- /* 灭*/
- FPIO_LOCK(0);
- //PIO3_BASE[8] &= ~4;
- }
- }
- /*=========================================================================
- * PROTOTYPE :
- * void LED_DispDataSet(char *dispStr)
- *
- * PURPOSE:
- * get the ASC2 value.
- *==========================================================================*/
- void LED_DispDataSet(char *dispStr)
- {
- unsigned char ucLEDData ;
- unsigned char i, iLedNo;
- for (iLedNo=0; iLedNo<4; iLedNo++)
- {
- ucLEDData = dispStr[iLedNo];
- i = 0;
- while (1)
- {
- if (LED_CODE[i].show_code == ucLEDData)
- {
- iLedData[iLedNo] = LED_CODE[i].led_code;
- break;
- }
- if (i++ >= LED_DISP_CHAR_MAX)
- {
- //printf("nr===the char not found:%d ,error!!!", ucLEDData);
- iLedData[iLedNo] = 0xff;
- break;
- }
- }
- }
- }
- /*=========================================================================
- * PROTOTYPE :
- * void LED_ShowNum(int i )
- *
- * PURPOSE:
- * Show Number
- *==========================================================================*/
- void LED_ShowNum(int i)
- {
- char str[10];
- //str[3] = (i)%10;
- //str[2] = (i/10)%10;
- //str[1] = (i/100)%10;
- //str[0] = (i/1000)%10;
- memset(str, 0x00, 10);
- sprintf(str, "%d", i);
- LED_DispDataSet(str);
- }
- /*=========================================================================
- * PROTOTYPE :
- * void LED_ShowString(char *str)
- *
- * PURPOSE:
- * Show String
- *==========================================================================*/
- void LED_ShowString(char *str)
- {
- LED_DispDataSet(str);
- }
- /*=========================================================================
- * PROTOTYPE :
- * void LED_ShowTime()
- *
- * PURPOSE:
- * Display system time
- *==========================================================================*/
- void LED_ShowTime()
- {
- time_t plTime;
- char out[8];
- char dispStr[4];
- U8 i;
- KB_TimeGetCurTime(&plTime);
- ConvertTimeStampToTimeString((U32)plTime, out);
- dispStr[0] = out[0];
- dispStr[1] = out[1];
- dispStr[2] = out[3];
- dispStr[3] = out[4];
- LED_DispDataSet(dispStr);
- for (i=0; i<4; i++)
- {
- iLedData[i] &= 0x7F;
- }
- }
- /*=========================================================================
- * PROTOTYPE :
- * void LEDProcess(void)
- *
- * PURPOSE:
- * Led driver & display process
- *==========================================================================*/
- #if 1//ndef IO_USE_API
- void LEDProcess(void)
- {
- static U8 DigitSelected = 0;
- static U8 oldDigitSelected = 0;
- static U16 LedDotShineCount = 0;
- static U8 LedDotFlag = 0;
- U8 i=0;
- U8 ledCode;
- #if 1
- ledCode = iLedData[DigitSelected];
- if((ledCode & 0x80) == 0) /* disp. time */
- {
- LedDotShineCount++;
- if(LedDotShineCount == 250)
- {
- LedDotShineCount = 0;
- LedDotFlag = 1-LedDotFlag;
- }
- }
- if (LedDotFlag)
- {
- ledCode |= 0x80;
- }
- /* 1. clear the led display */
- LED_PioComSet(oldDigitSelected, 0);
- if (ledCode != 0xff)
- {
- /* 2. send the data to segment */
- FPIO_CLK(1);
- for (i=0; i<8; i++)
- {
- if (((0x80>>i) & ledCode) != 0)
- {
- FPIO_DATA(1);
- FPIO_CLK(0);
- FPIO_CLK(1);
- }
- else
- {
- FPIO_DATA(0);
- FPIO_CLK(0);
- FPIO_CLK(1);
- }
- task_delay(1); /* Very important here, can't be deleted */
- }
- /* 3. Display it */
- LED_PioComSet(DigitSelected, 1);
- }
- oldDigitSelected = DigitSelected;
- if (++DigitSelected > 3)
- {
- DigitSelected = 0 ;
- }
- #else
- /*1. clear all the led display*/
- PIO2_BASE[PIO_OUT_CLR] |= PIO_BIT_2;
- PIO2_BASE[PIO_OUT_CLR] |= PIO_BIT_3;
- PIO2_BASE[PIO_OUT_CLR] |= PIO_BIT_5;
- PIO2_BASE[PIO_OUT_CLR] |= PIO_BIT_6;
- if (++ucLEDNo > 3)
- {
- ucLEDNo = 0 ;
- }
- ucLEDData = LED_font[iLedData[ucLEDNo]] ;
- PIO2_BASE[PIO_OUT_CLR] &= ~PIO_BIT_7;
- for(i=0;i<8;i++)
- {
- if(((test_value>>i)&ucLEDData)!=0)
- {
- PIO0_BASE[PIO_OUT_CLR] &= ~PIO_BIT_1;
- PIO2_BASE[PIO_OUT_CLR] |= PIO_BIT_7;
- PIO2_BASE[PIO_OUT_CLR] &= ~PIO_BIT_7;
- }
- else
- {
- PIO0_BASE[PIO_OUT_CLR] |= PIO_BIT_1;
- PIO2_BASE[PIO_OUT_CLR] |= PIO_BIT_7;
- PIO2_BASE[PIO_OUT_CLR] &= ~PIO_BIT_7;
- }
- task_delay(1);
- }
- /*3.Display it*/
- switch (ucLEDNo)
- {
- case 0:
- PIO2_BASE[PIO_OUT_CLR] &= ~PIO_BIT_2;
- break;
- case 1:
- PIO2_BASE[PIO_OUT_CLR] &= ~ PIO_BIT_3;
- break;
- case 2:
- PIO2_BASE[PIO_OUT_CLR] &= ~PIO_BIT_5;
- break;
- case 3:
- PIO2_BASE[PIO_OUT_CLR] &= ~PIO_BIT_6;
- break;
- }
- #endif
- }
- #else
- STPIO_Handle_t PIO0Handle = (STPIO_Handle_t)NULL ; /*PIO0Handle STPCM_ResetCIchip*/
- STPIO_Handle_t PIO1Handle = (STPIO_Handle_t)NULL ; /*Flash Protect*/
- STPIO_Handle_t PIO3Handle = (STPIO_Handle_t)NULL ; /*Led data and clock*/
- STPIO_Handle_t PIO2Handle = (STPIO_Handle_t)NULL ; /*Led data and clock*/
- STPIO_Handle_t PIO4Handle = (STPIO_Handle_t)NULL ; /*led select bit,Diseqc,LNB Over,LNB On/Off,H/V*/
- STPIO_Handle_t PIO5Handle = (STPIO_Handle_t)NULL ; /*led select bit,Diseqc,LNB Over,LNB On/Off,H/V*/
- void LEDProcess(void)
- {
- ST_ErrorCode_t error ;
- static BYTE ucLEDNo = 1 ;
- BYTE ucLEDData ;
- int iLED_Bit_Count ;
- const unsigned char LED_font [ 39 ] =
- {
- 0x18, 0xdb, 0x2a, 0x4a, 0xc9,
- 0x4c, 0x0c, 0xda, 0x08, 0x48,
- 0xa8, 0xef, 0x7f, 0xff,
- 0xef,0xad,0x2c,0x8f,0x0b,0x09,0x88,0xbc,0xac,
- 0xfe, 0xef, 0x7f, 0xbd, 0xdb, 0xf7,
- 0x18&0xf7, 0xdb&0xf7, 0x2a&0xf7, 0x4a&0xf7, 0xc9&0xf7,
- 0x4c&0xf7, 0x0c&0xf7, 0xda&0xf7, 0x08&0xf7, 0x48&0xf7,
- };
- error = STPIO_Set(PIO3Handle, PIO_BIT_2);
- printf("STPIO_Set========n");
- task_delay(30000000);
- STPIO_Clear( PIO3Handle, PIO_BIT_2);
- #if 0
- /*1. clear all the led display*/
- error = STPIO_Set( PIO4Handle, FP_SELECT0 );
- error |= STPIO_Set( PIO4Handle, FP_SELECT1 );
- error |= STPIO_Set( PIO4Handle, FP_SELECT2 );
- error |= STPIO_Set( PIO4Handle, FP_SELECT3 );
- if ( error != ST_NO_ERROR )
- {
- STTBX_Print(("STPIO_Set errorn"));
- }
- if( ++ucLEDNo > 3 )
- ucLEDNo = 0 ;
- ucLEDData = LED_font[ iLedData[ ucLEDNo ] ] ;
- for(iLED_Bit_Count = 8;iLED_Bit_Count > 0;iLED_Bit_Count--)
- {
- error = STPIO_Set( PIO2Handle, FP_DATA );
- error |= STPIO_Set( PIO2Handle, FP_CLK );
- error |= STPIO_Clear(PIO2Handle, FP_CLK );
- }
- for( iLED_Bit_Count = 8; iLED_Bit_Count > 0; iLED_Bit_Count--)
- {
- if ( ucLEDData & 0x80 )
- error = STPIO_Set( PIO2Handle, FP_DATA );
- else
- error = STPIO_Clear(PIO2Handle, FP_DATA );
- error = STPIO_Set( PIO2Handle, FP_CLK );
- error |= STPIO_Clear(PIO2Handle, FP_CLK );
- ucLEDData <<= 1;
- }
- /*3.Display it*/
- switch ( ucLEDNo )
- {
- case 0:
- error = STPIO_Clear( PIO4Handle, FP_SELECT2 );
- break;
- case 1:
- error = STPIO_Clear( PIO4Handle, FP_SELECT0 );
- break;
- case 2:
- error = STPIO_Clear( PIO4Handle, FP_SELECT1 );
- break;
- case 3:
- error = STPIO_Clear( PIO4Handle, FP_SELECT3 );
- break;
- }
- #endif
- }
- void SEGInit(void)
- {
- ST_ErrorCode_t error;
- STPIO_OpenParams_t OpenParams;
- OpenParams.ReservedBits = PIO_BIT_2;
- OpenParams.BitConfigure[2] = STPIO_BIT_OUTPUT;
- OpenParams.IntHandler = NULL;
- error = STPIO_Open("PIO3", &OpenParams, &PIO3Handle) ;
- if ( error != ST_NO_ERROR )
- {
- printf("ERROR: SEGInitn");
- }
- }
- #endif
- #if 0 //WT, test pio STAPI
- #define PIO_NUM 3 /*PIO3 */
- #define PIO_BIT PIO_BIT_2 /*pin 2 */
- #define PIO_TYPE STPIO_BIT_OUTPUT
- extern ST_DeviceName_t PIO_DeviceName[] ;
- static ST_ErrorCode_t PIO_TestHL(void)
- {
- ST_ErrorCode_t error;
- static STPIO_Handle_t TnrResetHandle;
- STPIO_OpenParams_t OpenParams;
- ///ST_DeviceName_t PIO_DeviceName[] = {"PIO0","PIO1","PIO2","PIO3"};
- static int init_flag=0;
- if (init_flag == 0)
- {
- OpenParams.ReservedBits = PIO_BIT;
- OpenParams.BitConfigure[3] = PIO_TYPE;
- OpenParams.IntHandler = NULL;
- error = STPIO_Open(PIO_DeviceName[PIO_NUM], &OpenParams, &TnrResetHandle);
- if(error != ST_NO_ERROR)
- {
- STTBX_Print(("Error!! STPIO_Open: %dn", (error)));
- return error;
- }
- init_flag = 1;
- }
- printf("nr Green led PIO_TestHL nr");
- STPIO_Clear(TnrResetHandle, PIO_BIT);
- task_delay(10000);
- task_delay(10000000);
- STPIO_Set(TnrResetHandle, PIO_BIT);
- task_delay(10000);
- task_delay(10000000);
- return ST_NO_ERROR;
- }
- #endif
- void LED_TEST_SegdispProcess (void)
- {
- #if 0//test green led
- Led_Green(1);
- task_delay(30000000);
- Led_Green(0);
- task_delay(30000000);
- #endif
- printf("-2x-xx----n");
- #if 0
- //pio_init_led();
- while (1)
- {
- pio_SetORClear(1);
- task_delay(ST_GetClocksPerSecond()/460);
- pio_SetORClear(0);
- task_delay(ST_GetClocksPerSecond()/460);
- }
- #endif
- while(1)
- {
- #if 1
- PIO3_BASE[PIO_OUT_CLR] |= PIO_BIT_4;
- PIO3_BASE[PIO_OUT_CLR] |= PIO_BIT_3;
- PIO3_BASE[PIO_OUT_CLR] |= PIO_BIT_2;
- PIO2_BASE[PIO_OUT_CLR] |= PIO_BIT_5;
- PIO0_BASE[PIO_OUT_CLR] |= PIO_BIT_1;
- PIO2_BASE[PIO_OUT_CLR] |= PIO_BIT_6;
- PIO2_BASE[PIO_OUT_CLR] |= PIO_BIT_7;
- PIO2_BASE[PIO_OUT_CLR] |= PIO_BIT_2;
- PIO2_BASE[PIO_OUT_CLR] |= PIO_BIT_3;
- //printf("-x-xx----n");
- task_delay(ST_GetClocksPerSecond()/460);
- PIO3_BASE[PIO_OUT_CLR] &= ~PIO_BIT_4;
- PIO3_BASE[PIO_OUT_CLR] &= ~PIO_BIT_3;
- PIO3_BASE[PIO_OUT_CLR] &= ~PIO_BIT_2;
- PIO2_BASE[PIO_OUT_CLR] &= ~PIO_BIT_5;
- PIO0_BASE[PIO_OUT_CLR] &= ~PIO_BIT_1;
- PIO2_BASE[PIO_OUT_CLR] &= ~PIO_BIT_6;
- PIO2_BASE[PIO_OUT_CLR] &= ~PIO_BIT_7;
- PIO2_BASE[PIO_OUT_CLR] &= ~PIO_BIT_2;
- PIO2_BASE[PIO_OUT_CLR] &= ~PIO_BIT_3;
- task_delay(ST_GetClocksPerSecond()/460);
- #else
- LEDProcess();
- //printf("-1x-xx----n");
- //task_delay(500);
- //wt_test();
- #endif
- task_delay(ST_GetClocksPerSecond()/460);
- //printf("-x-----n");
- }
- }
- /*=========================================================================
- * PROTOTYPE :
- * static void LED_SegmentProcess(void)
- *
- * PURPOSE:
- * Led task created
- *==========================================================================*/
- static void LED_SegmentProcess(void)
- {
- U8 fKeyCheck;
- LED_LedGreen(1);
- while (1)
- {
- if(fKeyCheck++ >= 100)
- {
- fKeyCheck = 0;
- FP_KeyCheck();
- task_delay(10);
- }
- LEDProcess();
- task_delay(ST_GetClocksPerSecond()/300);
- }
- }
- /*=========================================================================
- * PROTOTYPE :
- * void LED_Init(void)
- *
- * PURPOSE:
- * Led init
- *==========================================================================*/
- void LED_Init(void)
- {
- //setup_pio();
- KB_OSPTaskInit("LED", 1024, (void (*)(void*))LED_SegmentProcess, MENU_PRIORITY, NULL, &LED_TaskID);
- }
- /*=========================================================================
- * PROTOTYPE :
- * void FP_KeyCheck(void)
- *
- * PURPOSE:
- * Front panel key check
- *==========================================================================*/
- void FP_KeyCheck(void)
- {
- unsigned char i, j;
- unsigned char fp_key_data[7] = {0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF};
- unsigned char Key_Value;
- BYTE ucKeyRead;
- for (j = 0; j < 7; j++)
- {
- FPIO_CLK(1);
- for (i = 0; i < 8; i++)
- {
- if (((0x80 >> i) & fp_key_data[j]) != 0)
- {
- FPIO_DATA(1);
- FPIO_CLK(0);
- FPIO_CLK(1);
- }
- else
- {
- FPIO_DATA(0);
- FPIO_CLK(0);
- FPIO_CLK(1);
- }
- task_delay(1);
- }
- Key_Value = READ_KEY_BITS;
- if (Key_Value == 0)
- {
- switch (j)
- {
- case 0:
- ucKeyRead = rc_KeyRight;
- break;
- case 1:
- ucKeyRead = rc_KeyDown;
- break;
- case 2:
- ucKeyRead = rc_KeyLeft;
- break;
- case 3:
- ucKeyRead = rc_KeyUp;
- break;
- case 4:
- ucKeyRead = rc_KeyMenu;
- break;
- case 5:
- ucKeyRead = rc_KeyOK;
- break;
- case 6:
- ucKeyRead = rc_KeyPower;
- break;
- } /* END SWITCH */
- {
- KB_OSPMsgNode movie_msg;
- movie_msg.Word1=KB_MOVIE_KEY_REQUEST;
- movie_msg.Word2=ucKeyRead;
- kb_machblue_task_post(&movie_msg);
- }
- }
- }
- }