//-------------------------------------------------------------------
// This function library dynamically links the ADSmartIO library
// and library functions.
//
// Differences from documentation
// - Spelling
//     SIOBackLightVEEPwm -> SIOVeePwm (documentation is correct, .h file was not)
//     SIOBackLightPWM -> SIOBacklightPWM
//     SIOBackLightON -> SIOBacklightOn
//     SIOBackLightOFF -> SIOBacklightOff
//     SIOSetKeyPadSize -> SIOSetKeypadSize
// - Omitted
//     version 0x8003 functions
//
//
// 14nov02 20-11331 ADS/ak
// - initial release
//-------------------------------------------------------------------


//-------------------------------------------------------------------
// Loads ADSmartIO library and maps function names to functions in
// the library.  Returns false if the library is not found.
//-------------------------------------------------------------------
int LoadADSmartIOFunctions();


//-------------------------------------------------------------------
// Internal function types
//-------------------------------------------------------------------
typedef UINT (*SIOANALOGCONVERSION)(BYTE channel);
typedef void (*SIOSELECTOPTION)(BYTE Option);

typedef void (*SIOSETSSPTIMEOUT)(UINT Option);  // manual says BOOL return and ULONG parameter

typedef void (*SIO_VOID_BYTE)(BYTE value);
typedef UINT (*SIO_UINT_VOID)(void);
typedef BOOL (*SIO_BOOL_2BYTE)(BYTE value1, BYTE value2);
typedef BYTE (*SIO_BYTE_VOID)(void);
typedef UINT (*SIO_UINT_BYTE)(BYTE channel);
typedef void (*SIO_VOID_VOID)(void);
 
//-------------------------------------------------------------------
// Function-mapping variables
// (must be externs to prevent linker errors)
//-------------------------------------------------------------------

extern SIO_UINT_VOID	SIOFirmwareVersion, 
					    SIOReadDeviceVersion, 
						SIOReadDevicePartType;
extern SIO_VOID_BYTE	SIOSelectOption;
extern SIOSETSSPTIMEOUT SIOSetSSPTimeout;
extern SIO_VOID_BYTE	SIOInitDDRA,
			            SIOInitDDRB, 
						SIOInitDDRC, 
						SIOInitDDRD;
extern SIO_VOID_BYTE	SIOWritePortA,
						SIOWritePortB, 
						SIOWritePortC, 
						SIOWritePortD;
extern SIO_UINT_VOID	SIOReadPortA, 
						SIOReadPortB, 
						SIOReadPortC, 
						SIOReadPortD;
extern SIO_VOID_BYTE    SIOVeePwm,
						SIOBacklightPwm;
extern SIO_VOID_VOID    SIOBacklightOn, 
						SIOBacklightOff;
extern SIO_UINT_VOID	SIOReadTemperature;
extern SIO_BOOL_2BYTE   SIOSetKeypadSize;
extern SIO_BYTE_VOID    SIOReadKeypad;
extern SIO_UINT_BYTE    SIOAnalogConversion;
