#ifndef CFONTZ633IO_H
#define CFONTZ633IO_H
/* ====================================================================
* 635 WinTest Code.
* SERIAL.C: Windows 32 packet based example code
* Copyright 2001, Crystalfontz America, Inc. Written by Brent A. Crosby
* www.crystalfontz.com, brent@crystalfontz.com
* ====================================================================
*/
#define CF633_Ping_Command 0
#define CF633_Get_Hardware_And_Firmware_Version 1
#define CF633_Write_User_Flash_Area 2
#define CF633_Read_User_Flash_Area 3
#define CF633_Store_Current_State_As_Boot_State 4
#define CF633_Reboot 5
#define CF633_Clear_LCD_Screen 6
#define CF633_Set_LCD_Contents_Line_One 7
#define CF633_Set_LCD_Contents_Line_Two 8
#define CF633_Set_LCD_Special_Character_Data 9
#define CF633_Read_Height_Bytes_of_LCD_Memory 10
#define CF633_Set_LCD_Cursor_Position 11
#define CF633_Set_LCD_Cursor_Style 12
#define CF633_Set_LCD_Contrast 13
#define CF633_Set_LCD_And_Keypad_Backlight 14
#define CF633_Query_Last_Fan_Pulse_Count 15
#define CF633_Set_Up_Fan_Reporting 16
#define CF633_Set_Fan_Power 17
#define CF633_Read_DOW_Device_Information 18
#define CF633_Set_Up_Temperature_Reporting 19
#define CF633_Arbitrary_DOW_Transaction 20
#define CF633_Set_Up_Live_Fan_or_Temperature_Display 21
#define CF633_Send_Command_Directly_to_the_LCD_Controller 22
#define CF633_Configure_Key_Reporting 23
#define CF633_Read_Keypad_Polled_Mode 24
#define CF633_Set_Fan_Power_Failsafe 25
#define CF633_Set_Fan_Tachometer_Glitch_Filter 26
#define CF633_Query_Fan_Power_and_Failsafe_Mask 27
#define CF633_Set_ATX_Power_Switch_Functionality 28
#define CF633_Enable_Disable_and_Reset_the_Watchdog 29
#define CF633_Read_Reporting_and_Status 30
#define CF633_Send_Data_to_LCD 31
#define CF633_Key_Legends 32
#define CF633_Set_Baud_Rate 33
#define CF633_Set_GPIO_Pin 34
#define CF633_Read_GPIO_Pin 35
/* Those are all the possible keys we know off */
#define KEY_UP_PRESS 1
#define KEY_DOWN_PRESS 2
#define KEY_LEFT_PRESS 3
#define KEY_RIGHT_PRESS 4
#define KEY_ENTER_PRESS 5
#define KEY_EXIT_PRESS 6
#define KEY_UP_RELEASE 7
#define KEY_DOWN_RELEASE 8
#define KEY_LEFT_RELEASE 9
#define KEY_RIGHT_RELEASE 10
#define KEY_ENTER_RELEASE 11
#define KEY_EXIT_RELEASE 12
typedef unsigned char ubyte;
typedef signed char sbyte;
typedef unsigned short word;
typedef unsigned long dword;
/* KeyRing management */
#define KEYRINGSIZE 16
typedef struct {
unsigned char contents[KEYRINGSIZE];
int head;
int tail;
} KeyRing;
/* receive buffer management */
#define RECEIVEBUFFERSIZE 512
typedef struct _reveivebuffer {
unsigned char contents[RECEIVEBUFFERSIZE];
int head;
int tail;
int peek;
} ReceiveBuffer;
/* command management */
#define MAX_DATA_LENGTH 22 /* CF635 spec says 0..22 */
#define MAX_COMMAND 35 /* CF635 spec says 0..35 */
typedef struct {
ubyte command;
ubyte data_length;
ubyte data[MAX_DATA_LENGTH+1];
word crc;
} COMMAND_PACKET;
void EmptyKeyRing(KeyRing *kr);
int AddKeyToKeyRing(KeyRing *kr, unsigned char key);
unsigned char GetKeyFromKeyRing(KeyRing *kr);
void send_bytes_message(int fd, unsigned char msg, int len, unsigned char *data);
void send_onebyte_message(int fd, unsigned char msg, unsigned char value);
void send_zerobyte_message(int fd, unsigned char msg);
void EmptyReceiveBuffer(ReceiveBuffer *rb);
void SyncReceiveBuffer(ReceiveBuffer *rb, int fd, unsigned int number);
int BytesAvail(ReceiveBuffer *rb);
unsigned char GetByte(ReceiveBuffer *rb);
int PeekBytesAvail(ReceiveBuffer *rb);
void SyncPeekPointer(ReceiveBuffer *rb);
void AcceptPeekedData(ReceiveBuffer *rb);
unsigned char PeekByte(ReceiveBuffer *rb);
/* global variables */
extern KeyRing keyring;
extern ReceiveBuffer receivebuffer;
#endif /* CFONTZ633IO_H */
syntax highlighted by Code2HTML, v. 0.9.1