COM AM35 WinCE: Difference between revisions
From Wiki-DB
Jump to navigationJump to search
Ageisreiter (talk | contribs) Created page with "== DHHalLib (function library) == The DHHalLib provides hardware related functions for Windows Embedded CE 6 and Windows Embedded Compact 7. All the functionality is available fr..." |
Ageisreiter (talk | contribs) |
||
| Line 22: | Line 22: | ||
=== I2C === | === I2C === | ||
:'''Open''' | |||
:{| class="wikitable" | |||
|''<code> bool I2COpen(unsigned char cI2CPort) </code>'' | |||
|} | |||
:Input values: | |||
::<code>unsigned char cI2CPort</code> = DHCOM I2C port number (1.. 2) | |||
:Return value: <code>bool</code> --> true = success; false = failed | |||
:'''Close''' | |||
:{| class="wikitable" | |||
|''<code> void I2CClose(unsigned char cI2CPort) </code>'' | |||
|} | |||
:Input values: | |||
::<code>unsigned char cI2CPort</code> = DHCOM I2C port number (1.. 2) | |||
:Return value: <code>bool</code> --> true = success; false = failed | |||
:'''Read''' | :'''Read''' | ||
:{| class="wikitable" | :{| class="wikitable" | ||
| Line 30: | Line 46: | ||
::<code>unsigned char iDevId</code> = I2C device address (0..127) | ::<code>unsigned char iDevId</code> = I2C device address (0..127) | ||
::<code>unsigned char iI2CReg</code> = I2C device register address (0..255) | ::<code>unsigned char iI2CReg</code> = I2C device register address (0..255) | ||
::<code>bool bSendStop</code> = | ::<code>bool bSendStop</code> = NOT SUPPORTED | ||
::<code>unsigned char *pOutBuffer</code> = Pointer to the read byte | ::<code>unsigned char *pOutBuffer</code> = Pointer to the read byte | ||
:Return value: <code>bool</code> --> true = success; false = failed | :Return value: <code>bool</code> --> true = success; false = failed | ||
| Line 43: | Line 59: | ||
::<code>unsigned char iI2CReg</code> = I2C device register address (0..255) | ::<code>unsigned char iI2CReg</code> = I2C device register address (0..255) | ||
::<code>unsigned char iValue</code> = Value to be written | ::<code>unsigned char iValue</code> = Value to be written | ||
::<code>bool bSendStop</code> = | ::<code>bool bSendStop</code> = NOT SUPPORTED | ||
:Return value: <code>bool</code> --> true = success; false = failed | :Return value: <code>bool</code> --> true = success; false = failed | ||
| Line 55: | Line 71: | ||
::<code>unsigned char iI2CReg</code> = I2C device register address (0..255) | ::<code>unsigned char iI2CReg</code> = I2C device register address (0..255) | ||
::<code>unsigned char cBytes</code> = Number of bytes to be read (max. 255) | ::<code>unsigned char cBytes</code> = Number of bytes to be read (max. 255) | ||
::<code>bool bSendStop</code> = | ::<code>bool bSendStop</code> = NOT SUPPORTED | ||
::<code>unsigned char *pOutBuffer</code> = Pointer to the read buffer | ::<code>unsigned char *pOutBuffer</code> = Pointer to the read buffer | ||
:Return value: <code>bool</code> --> true = success; false = failed | :Return value: <code>bool</code> --> true = success; false = failed | ||
| Line 68: | Line 84: | ||
::<code>unsigned char iI2CReg</code> = I2C device register address (0..255) | ::<code>unsigned char iI2CReg</code> = I2C device register address (0..255) | ||
::<code>unsigned char cBytes</code> = Number of bytes to be written (max. 255) | ::<code>unsigned char cBytes</code> = Number of bytes to be written (max. 255) | ||
::<code>bool bSendStop</code> = | ::<code>bool bSendStop</code> = NOT SUPPORTED | ||
::<code>unsigned char *pInBuffer</code> = Pointer to the input buffer | ::<code>unsigned char *pInBuffer</code> = Pointer to the input buffer | ||
:Return value: <code>bool</code> --> true = success; false = failed | :Return value: <code>bool</code> --> true = success; false = failed | ||
Revision as of 13:46, 9 April 2013
DHHalLib (function library)
The DHHalLib provides hardware related functions for Windows Embedded CE 6 and Windows Embedded Compact 7. All the functionality is available from the user mode.
Version numbers
- Read DHHalLib version
unsigned long DHHalLibGetVersion()
- Return value:
unsigned long--> version number (e.g. 0x01040001 for version 1.4.0.1)
- BSP version
unsigned long BSPGetVersion()
- Return value:
unsigned long--> version number (e.g. 0x01040001 for version 1.4.0.1) - Note: The version number information is stored in the following registry key:
[HKEY_LOCAL_MACHINE\Ident] dword:"BSPVersionNumber"
- Read image version
unsigned long WinCEImageGetVersion()
- Return value:
unsigned long--> version number (e.g. 0x01040001 for version 1.4.0.1)
I2C
- Open
bool I2COpen(unsigned char cI2CPort)
- Input values:
unsigned char cI2CPort= DHCOM I2C port number (1.. 2)
- Return value:
bool--> true = success; false = failed
- Close
void I2CClose(unsigned char cI2CPort)
- Input values:
unsigned char cI2CPort= DHCOM I2C port number (1.. 2)
- Return value:
bool--> true = success; false = failed
- Read
bool I2CRead( unsigned char cI2CPort, unsigned char cDevId, unsigned char cI2CReg, bool bSendStop, unsigned char *pOutBuffer)
- Input values:
unsigned char cI2CPort= DHCOM I2C port number (1.. 2)unsigned char iDevId= I2C device address (0..127)unsigned char iI2CReg= I2C device register address (0..255)bool bSendStop= NOT SUPPORTEDunsigned char *pOutBuffer= Pointer to the read byte
- Return value:
bool--> true = success; false = failed
- Write
bool I2CWrite( unsigned char cI2CPort, unsigned char cDevId, unsigned char cI2CReg, unsigned char cValue, bool bSendStop)
- Input values:
unsigned char cI2CPort= DHCOM I2C port number (1.. 2)unsigned char iDevId= I2C device address (0..127)unsigned char iI2CReg= I2C device register address (0..255)unsigned char iValue= Value to be writtenbool bSendStop= NOT SUPPORTED
- Return value:
bool--> true = success; false = failed
- Read multiple bytes
bool I2CReadMultipleBytes( unsigned char cI2CPort, unsigned char cDevId, unsigned char cI2CReg, unsigned char cBytes, bool bSendStop, unsigned char *pOutBuffer)
- Input values:
unsigned char cI2CPort= DHCOM I2C port number (1.. 2)unsigned char iDevId= I2C device address (0..127)unsigned char iI2CReg= I2C device register address (0..255)unsigned char cBytes= Number of bytes to be read (max. 255)bool bSendStop= NOT SUPPORTEDunsigned char *pOutBuffer= Pointer to the read buffer
- Return value:
bool--> true = success; false = failed
- Write multiple bytes
bool I2CWriteMultipleBytes( unsigned char cI2CPort, unsigned char cDevId, unsigned char cI2CReg, unsigned char cBytes, bool bSendStop, unsigned char *pInBuffer)
- Input values:
unsigned char cI2CPort= DHCOM I2C port number (1.. 2)unsigned char iDevId= I2C device address (0..127)unsigned char iI2CReg= I2C device register address (0..255)unsigned char cBytes= Number of bytes to be written (max. 255)bool bSendStop= NOT SUPPORTEDunsigned char *pInBuffer= Pointer to the input buffer
- Return value:
bool--> true = success; false = failed
- Bus scan
bool I2CProbe(unsigned char cI2CPort, unsigned char cDevId)
- Description:
- Scans the bus for the specified device address. Is this achievable, then the function returns "true".
- Input values:
unsigned char cI2CPort= DHCOM I2C port number (1.. 2)unsigned char iDevId= I2C device address (0..127)
- Return value:
bool--> true = success; false = failed
GPIO
- Note: These functions can only access the DHCOM standard GPIOs. The mapping is done with the following enum.
enum DHCOM_GPIOEnum
{
DHCOM_GPIO_A,
DHCOM_GPIO_B,
DHCOM_GPIO_C,
DHCOM_GPIO_D,
DHCOM_GPIO_E,
DHCOM_GPIO_F,
DHCOM_GPIO_G,
DHCOM_GPIO_H,
DHCOM_GPIO_I,
DHCOM_GPIO_J,
DHCOM_GPIO_K,
DHCOM_GPIO_L,
DHCOM_GPIO_M,
DHCOM_GPIO_N,
DHCOM_GPIO_O,
DHCOM_GPIO_P,
DHCOM_GPIO_Q,
DHCOM_GPIO_R,
DHCOM_GPIO_S,
DHCOM_GPIO_T,
DHCOM_GPIO_U,
DHCOM_GPIO_NOT_DEFINED
};
- Direction
bool GPIOSetDirection( DHCOM_GPIOEnum eGpio, bool bInOut, bool bDefaultState)
- Input values:
DHCOM_GPIOEnum eGpio= DHCOM GPIO pin namebool bInOut= GPIO direction (1 = input / 0 = output)bool bDefaultState= Default state (0 = low / 1 = high)
- Return value:
bool--> true = success; false = failed
- Set state
void GPIOSetPin(DHCOM_GPIOEnum eGpio, bool bState)
- Input values:
DHCOM_GPIOEnum eGpio= DHCOM GPIO pin namebool bState= pin state ( 0 = low / 1 = high)
- Read state
bool GPIOGetPin(DHCOM_GPIOEnum eGpio)
- Input values:
DHCOM_GPIOEnum eGpio= DHCOM GPIO pin name
- Return value:
bool--> 0 = low; 1 = high
Memory
- Read physical address
int ReadPhysicalAddress(int iPhyAddr, unsigned char cRegSize)
- Input values:
int iPhyAddr= Physical addressunsigned char cRegSize= Register size (16 = 16bit; 32 = 32bit)
- Return value:
int--> current value of the physical address
- Write physical address
int WritePhysicalAddress( int iPhyAddr, unsigned char cRegSize, int iValue, bool bReadBack)
- Input values:
int iPhyAddr= physical addressunsigned char cRegSize= Register size (16 = 16bit; 32 = 32bit)int iValue= Value to be writtenbool bReadBack= true --> the current value is read back after the write; false --> the current value isn’t read back after the write
- Return value:
int--> content of the physical address after write, ifbReadBack= true. Otherwise the function returns 0.
- Map physical memory
PVOID UserMmMapIoSpace(ULONG PhysicalAddress, ULONG NumberOfBytes, BOOLEAN CacheEnable)
- Input values:
ULONG PhysicalAddress= physical addressULONG NumberOfBytes= Number of bytes to mapBOOLEAN CacheEnable= true --> Cached memory map; false --> Uncached memory map
- Return value:
PVOID--> virtual base address of the mapped memory - Note: From WinCE 6, the function
MmMapIoSpace()can not be called from the user mode. THis library function provides a workaround.
- UnMap physical memory
void UserMmUnmapIoSpace(PVOID BaseAddress, ULONG NumberOfBytes)
- Input values:
PVOID BaseAddress= pointer to virtual base address of the mapped memoryULONG NumberOfBytes= Number of mapped bytes
- Note: From WinCE 6, the function
MmUnmapIoSpace()can not be called from the user mode. THis library function provides a workaround.
Backlight
- PWM
bool SetBacklightPWM(int iPercent)
- Input values:
int iPercent= Backlight brightness in percent
- Return value:
bool--> true = success; false = failed
Touch screen
- Calibrate touch
bool CalibrateTouch()
- Return value:
bool--> true = success; false = failed
- Save calibration data
bool SaveTouchCalibrationData()
- Description:
- This function sets the registry entry
[HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\TOUCH] dword:"TouchCalibrationDone"to the value 1. For saving the value permanent please callSaveRegistry()afterwards.
- This function sets the registry entry
- Return value:
bool--> true = success; false = failed
- Clear calibration data
bool ClearTouchCalibrationData()
- Description:
- This function sets the registry entry
[HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\TOUCH] dword:"TouchCalibrationDone"to the value 0. For saving the value permanent please callSaveRegistry()afterwards.
- This function sets the registry entry
- Return value:
bool--> true = success; false = failed
Registry
- Save HIVE registry
bool SaveRegistry()
- Return value:
bool--> true = success; false = failed
- Create backup
bool CreateRegistryBackup()
- Description:
- This function generates the files ave_HKLM_Reg.srg and Save_HKLCU_Reg.srg in the folder \Storage Card\. These files can be used at a later time to restore the registry.
- Return value:
bool--> true = success; false = failed
- Restore backup
bool RestoreRegistryBackup()
- Description:
- This function restores the registry from the files Save_HKLM_Reg.srg and Save_HKLCU_Reg.srg in the folder \Storage Card\. Afterwards a restart is carried out automatically. If the backup files are not present, then the function returns the return value flase.
- Return value:
bool--> true = this never happens because a soft reset is performed; false = failed
Watchdog & Reset
- Soft reset
void SoftReset()
- Set Watchdog Timer
void SetWatchdog(unsigned char cTime)
- Input values:
unsigned char cTime= Watchdog timeout value (0 = 0.5sec., 1 = 1.0sec., ...)
- Retrigger Watchdog Timer
void ReloadWatchdog()