Major changes in functionality according to conf. call
30.6.2010
1.1
Martin Kroul
28.1.2011
First official release of KEAPI for Windows and Linux
- restructuralization of function names, parameters and types
- no changes in functionality
1.2
Martin Kroul
26.4.2011
VxWorks added to list of supported operating systems
1.21
2.15.7KEApiSmbusWriteWord 31
2.15.8KEApiSmbusReadWord 32
2.15.9KEApiSmbusWriteBlock 32
2.15.10KEApiSmbusReadBlock 32
2.16 GPIO 33
2.16.1KEApiGpioGetCount 33
2.16.2KEApiGpioGetDirectionCaps 33
2.16.3KEApiGpioGetDirection 34
2.16.4KEApiGpioSetDirection 34
2.16.5KEApiGpioGetLevel 34
2.16.6KEApiGpioSetLevel 35
2.17 Watchdog 35
2.17.1KEApiWatchdogEnable 35
2.17.2KEApiWatchdogTrigger 35
2.17.3KEApiWatchdogDisable 36
3 ABOUT KONTRON 37
Revision history
Legal notice:
All data is for information purposes only and not guaranteed for legal purposes. Subject to change
without notice. Information in this datasheet has been carefully checked and is
believed to be accurate; however, no responsibility is assumed for inaccuracies. All brand or product
names are trademarks or registered trademarks of their respective owners.
4
Software specification for Kontron EAPI
1 Introduction
1.1 Purpose of this document
This document describes Kontron Embedded API – a software library that enables programmers to
easily create their applications for monitoring and control hardware resources of Kontron boards,
modules, systems and platforms.
1.2 KEAPI overview
KEAPI is written in C language and distributed as a dynamic-linked library so it can be used by
arbitrary application developed in C, C++ or higher programming languages simply by linking to the
project.
KEAPI library provides a set of functions for
Obtaining basic information about the system
CPU performance control
Temperature and voltage sensors monitoring
Monitoring and control of fans
Display backlight control
Access to EEPROM user storage area
I2C and SMBus communication
GPIO control
Watchdog
All KEAPI functions can be called remotely from another computer over network (TCP/IP).
KEAPI is compatible with PICMG EAPI specification (http://www.picmg.org/pdf/COM_EAPI_R1_0.pdf).
This means that it implements all functions defined by this specification. However, these functions
offer just a small part of KEAPI functionalities and don’t allow remote connection.
1.3 Architectural overview
Kontron EAPI is a layer between Kontron hardware and user application. KEAPI functions either use
hardware drivers and operating system calls to perform requested operation on local board or
connects to KEAPI server that is installed on remote board somewhere on the internet. The KEAPI
server application listens on a predefined port (default is 7890) and waits for incoming request. When
the request comes, it uses KEAPI library to perform the operation and sends result back to the client.
Fig.1. – Kontron EAPI Architecture
5
Software specification for Kontron EAPI
KEAPI_RET_ERROR
General Error
KEAPI_RET_PARAM_ERROR
Wrong parameter value
KEAPI_RET_PARAM_NULL
Parameter is NULL (memory not pre-allocated)
KEAPI_RET_WD_TIMEOUT_NOT_SUPPORTED
WD timeout not supported
KEAPI_RET_BUFFER_OVERFLOW
Buffer overflow (probably configuration error)
KEAPI_RET_SETTING_ERROR
Error while setting value or feature (enable, disable)
KEAPI_RET_RETRIEVAL_ERROR
Error while retrieving information
KEAPI_RET_WRITE_ERROR
Cannot write to file
KEAPI_RET_READ_ERROR
Cannot read file
KEAPI_RET_MALLOC_ERROR
Memory allocation failed
KEAPI_RET_LIBRARY_ERROR
Exported function could not be loaded from library
KEAPI_RET_WMI_ERROR
Problems while reading from WMI
KEAPI_RET_NOT_INITIALIZED
KEAPI library is not initialized
KEAPI_RET_PARTIAL_SUCCESS
Part of requested information couldn’t be retrieved.
Returned information isn’t complete.
KEAPI_RET_FUNCTION_NOT_SUPPORTED
Function is not supported on current platform/HW
KEAPI_RET_FUNCTION_NOT_IMPLEMENTED
Function is not yet implemented
KEAPI_RET_INVALID_IP
IP address is not in a valid format
KEAPI_RET_RMT_CON_ERROR
Remote connection failed
KEAPI_RET_RPC_ERR_MAX_CONN_COUNT_EXCEEDED
Connection limit on the client side was
reached
KEAPI_RET_RPC_ERR_SOCKET_ERROR
Error with socket manipulation
KEAPI_RET_RPC_ERR_CONNECTION_NOT_FOUND
Connection for given board handle does not
exist
KEAPI_RET_RPC_ERR_NOT_IMPLEMENTED
Remote function call is not implemented
KEAPI_RET_RPC_ERR_SOCKET_TIMEOUT
Time limit for select() function expired
KEAPI_RET_RPC_ERR_PACKET_ERROR
Wrong format of KEAPI packet
1.4 Operating systems
This document describes KEAPI interface for Linux, Windows XP, Windows Vista - 32/64,
Windows 7 - 32/64, VxWorks.
2 Function Documentation
Main part of Kontron EAPI is dynamic-linked library with API functions. Before using any of these
functions, KEAPI has to be initialized and connection to the board has to be established by calling the
KEApiLibInitialize() function. This function returns a board handle (unique four-byte number) that will
other KEAPI functions take as their first parameter. The KEApiLibInitialize() function may be called
several times for simultaneous connection to several boards. When KEAPI is no longer needed, the
KEApiLibUnInitialize() function should be called.
Memory for structures and variables that will be used by KEAPI functions to store information must be
pre-allocated by the user application. KEAPI by itself doesn’t allocate memory for output parameters.
2.1 Return values
If everything goes well, all KEAPI functions return KEAPI_RET_SUCCESS. If some error occurs, the
returned error message differs for various functions. Error messages can be basically divided into two
groups: Functionality errors and Connection errors.
2.1.1 Functional errors
2.1.2 Remote connection errors
6
Software specification for Kontron EAPI
in/out
Parameter name
Description
in
pHostIp
IP address of a remote computer. If it is set to NULL or
“localhost” then localhost is considered to be the target
machine (no KEAPI server running on the machine is
needed). If it is set to “127.0.0.1”, then it connects to KEAPI
server running on the local machine (can be used for testing
KEAPI server application locally)
in
port
Port number where KEAPI server is listening, default is 7890.
out
pBoardHandle
Returned pointer to the handle of selected board.
BoardHandle == 0 means localhost.
Pointer to a variable that receives system running time in
seconds
Description:
Provides information about Kontron motherboard.
Parameters:
Structure used:
typedef structBoard_Info
{
KEAPI_CHAR boardManufacturer[MAX_STR]; // Board manufacturer KEAPI_CHAR boardName[MAX_STR]; // Board name KEAPI_CHAR boardVersion[MAX_STR]; // Board version KEAPI_CHAR boardSerialNumber[MAX_STR]; // Board serial number KEAPI_CHAR biosVersion[MAX_STR]; // Bios version KEAPI_CHAR biosDate[MAX_STR]; // BIOS date in format
Uses Intel AMT to get information about state of remote board (turned on, turned off or hibernated).
The remote board must support Intel AMT and enable it in BIOS. AMT functionality can be tested via
web browser (fill in address http:// “remote board’s IP”:16992 and AMT web page should appear).
Uses Intel AMT to turn on, turn off or restart remote board. If the remote board doesn’t support Intel
AMT, then the KEApiSetSystemState() function using OS call can be used instead.
Uses operating system’s command to turn on, turn off or restart remote board. There is no guarantee
that the command was performed correctly i.e. if the system hangs.
KEAPI_UINT32 boardHandle,
KEAPI_INT8 freqType,
KEAPI_PINT32 frequency
);
Description:
Provides information about CPU frequency
minimal supported CPU frequency: CPU_FREQUENCY_MIN, 0
maximal supported CPU frequency: CPU_FREQUENCY_MAX, 1
current CPU frequency: CPU_FREQUENCY_CURRENT, 2.
10
Software specification for Kontron EAPI
in/out
Parameter name
Description
in
boardHandle
Handle of the selected board
in
freqType
Type of frequency (minimal (CPU_FREQUENCY_MIN, 0),
maximal (CPU_FREQUENCY_MAX, 1), current
(CPU_FREQUENCY_CURRENT, 2))
out
frequency
Frequency of the CPU, in kHz
in/out
Parameter name
Description
in
boardHandle
Handle of the selected board
out
pCpuInfo
Returned CPU_INFO structure
Parameters:
2.4.2 KEApiGetCpuInfo
KEAPI_CALLTYPEKEAPI_UINT32 KEApiGetCpuInfo (
KEAPI_UINT32 boardHandle,
PCPU_INFO pCpuInfo
);
Description:
Provides information about processors.
Parameters:
Structure used:
typedef structCpu_Info
{
KEAPI_CHAR cpuName[MAX_STR]; // CPU name KEAPI_INT32 cpuCount; // Number of CPUs KEAPI_INT32 cpuCoreCount; // Number of cores of each CPU KEAPI_INT32 cpuThreadCount; // Number of CPU threads KEAPI_FLOAT cpuMaxCoreSpeed; // Designed core speed in MHz KEAPI_INT32 fsbSpeed; // FSB speed in MHz KEAPI_INT32 l1Cache; // L1 cache size in kB KEAPI_INT32 l2Cache; // L2 cache size in kB KEAPI_INT32 l3Cache; // L3 cache size in kB