//*****************************************************************************
//
// pdc.h - Stellaris development board Peripheral Device Controller definitions
//         and prototypes.
//
// Copyright (c) 2005,2006 Luminary Micro, Inc.  All rights reserved.
//
// Software License Agreement
//
// Luminary Micro, Inc. (LMI) is supplying this software for use solely and
// exclusively on LMI's Stellaris Family of microcontroller products.
//
// The software is owned by LMI and/or its suppliers, and is protected under
// applicable copyright laws.  All rights are reserved.  Any use in violation
// of the foregoing restrictions may subject the user to criminal sanctions
// under applicable laws, as well as to civil liability for the breach of the
// terms and conditions of this license.
//
// THIS SOFTWARE IS PROVIDED "AS IS".  NO WARRANTIES, WHETHER EXPRESS, IMPLIED
// OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
// LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
// CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
//
//*****************************************************************************

#ifndef __PDC_H__
#define __PDC_H__

#ifdef __cplusplus
extern "C"
{
#endif

//*****************************************************************************
//
// The registers within the peripheral device controller.
//
//*****************************************************************************
#define PDC_VER                 0x0         // Version register
#define PDC_CSR                 0x1         // Command/Status register
#define PDC_DSW                 0x4         // DIP Switch register
#define PDC_LED                 0x5         // LED register
#define PDC_LCD_CSR             0x6         // LCD Command/Status register
#define PDC_LCD_RAM             0x7         // LCD RAM register
#define PDC_GPXDAT              0x8         // GPIO X Data register
#define PDC_GPXDIR              0x9         // GPIO X Direction register
#define PDC_GPYDAT              0xA         // GPIO Y Data register
#define PDC_GPYDIR              0xB         // GPIO Y Direction register
#define PDC_GPZDAT              0xC         // GPIO Z Data register
#define PDC_GPZDIR              0xD         // GPIO Z Direction register

//*****************************************************************************
//
// Flags indicating a read or write to the peripheral device controller.
//
//*****************************************************************************
#define PDC_RD                  0x80        // PDC read command
#define PDC_WR                  0x00        // PDC write command

//*****************************************************************************
//
// LCD panel (Crystalfontz CFAH1602B) commands, RS = 0
//
//*****************************************************************************
#define LCD_CLEAR               0x01        // Clear display (0 fill DDRAM).
#define LCD_HOME                0x02        // Cursor home.
#define LCD_MODE                0x04        // Set entry mode (cursor dir)
#define LCD_ON                  0x08        // Set display, cursor, blinking
                                            // on/off
#define LCD_CUR                 0x10        // Cursor, display shift
#define LCD_IF                  0x20        // Set interface data length,
                                            // lines, font
#define LCD_CGADDR              0x40        // Set CGRAM AC address
#define LCD_DDADDR              0x80        // Set DDRAM AC address

//*****************************************************************************
//
// LCD Status bit
//
//*****************************************************************************
#define LCD_B_BUSY              0x80        // Busy flag.

//*****************************************************************************
//
// The GPIO port A pin numbers for the various SSI signals.
//
//*****************************************************************************
#define SSI_CS                  GPIO_PIN_3
#define PDC_CS                  GPIO_PIN_3
#define SSI_CLK                 GPIO_PIN_2
#define SSI_TX                  GPIO_PIN_5
#define SSI_RX                  GPIO_PIN_4

//*****************************************************************************
//
// Function Prototypes
//
//*****************************************************************************
extern void PDCInit(void);
extern unsigned char PDCRead(unsigned char ucAddr);
extern void PDCWrite(unsigned char ucAddr, unsigned char ucData);
extern unsigned char PDCDIPRead(void);
extern void PDCLEDWrite(unsigned char ucLED);
extern unsigned char PDCLEDRead(void);
extern void PDCLCDInit(void);
extern void PDCLCDBacklightOn(void);
extern void PDCLCDBacklightOff(void);
extern void PDCLCDClear(void);
extern void PDCLCDCreateChar(unsigned char ucChar, unsigned char *pucData);
extern void PDCLCDSetPos(unsigned char ucX, unsigned char ucY);
extern void PDCLCDWrite(const char *pcStr, unsigned long ulCount);
extern unsigned char PDCGPIODirRead(unsigned char ucIdx);
extern void PDCGPIODirWrite(unsigned char ucIdx, unsigned char ucValue);
extern unsigned char PDCGPIORead(unsigned char ucIdx);
extern void PDCGPIOWrite(unsigned char ucIdx, unsigned char ucValue);

#ifdef __cplusplus
}
#endif

#endif // __PDC_H__
