amn390
02-12-2009, 22:44
با عرض سلام خدمت دوستان و اساتید محترم,
یک برنامه هست که کارش کنترل اعمال یک دوربین که برای عکس برداری از حیوانات هست. توش چند تا فایل هست که به زبان c نوشته شدند. کسی می تونه کمک کنه و بگه اینا چی اند و چی کار می کنند و یا چی جوری می شه گزیته هاشون رو تغییر داد...
ممنون می شم 10000 بار!
--------------------------------------------------------------*/
#ifndef LMITECH_KLAPI_H_INCLUDED
#define LMITECH_KLAPI_H_INCLUDED
#ifdef __GNUC__
# define KAPI_GCC
#endif
/* Only Windows (MSVC / GCC) and Linux (GCC) are supported */
#ifdef KAPI_MS_WINDOWS
# if !defined(KAPI_GCC) && !defined(KAPI_MSVC)
# error "Only Microsoft Visual Studio and GCC (MinGW) are supported"
# endif
#elif defined(KAPI_GNU_LINUX)
# ifndef KAPI_GCC
# error "Only GCC is supported on Linux"
# endif
#else
# error "What's your operating system?"
#endif
/* Structure field alignment */
#define KAPI_ALIGN_SHIFT 3
#define KAPI_ALIGN 8
/* Compiler/architecure-specific definitions of standard types and decorators */
#ifdef KAPI_MSVC
# define _CRT_SECURE_NO_DEPRECATE
# ifdef _DEBUG
# define _CRTDBG_MAP_ALLOC
# include <stdlib.h>
# include <crtdbg.h>
# endif
# define KAPI_CALL __stdcall
# define KAPI_EXPORT(RETURN_TYPE) RETURN_TYPE KAPI_CALL
typedef unsigned char kxUInt8;
typedef unsigned short kxUInt16;
typedef unsigned int kxUInt32;
typedef unsigned __int64 kxUInt64;
typedef signed char kxInt8;
typedef signed short kxInt16;
typedef signed int kxInt32;
typedef signed __int64 kxInt64;
typedef float kxFloat32;
typedef double kxFloat64;
typedef unsigned char kxByte;
typedef char kxChar;
typedef void* kxPointer;
#elif defined(KAPI_GCC)
# define KAPI_CALL
# define KAPI_EXPORT(RETURN_TYPE) RETURN_TYPE
typedef unsigned char kxUInt8;
typedef unsigned short kxUInt16;
typedef unsigned int kxUInt32;
typedef signed char kxInt8;
typedef signed short kxInt16;
typedef signed int kxInt32;
typedef signed long long kxInt64;
typedef unsigned long long kxUInt64;
typedef float kxFloat32;
typedef double kxFloat64;
typedef unsigned char kxByte;
typedef char kxChar;
typedef void* kxPointer;
#endif
typedef kxUInt8 k1u;
typedef kxUInt8 k8u;
typedef kxUInt16 k16u;
typedef kxUInt32 k32u;
typedef kxUInt64 k64u;
typedef kxInt8 k8s;
typedef kxInt16 k16s;
typedef kxInt32 k32s;
typedef kxInt64 k64s;
typedef kxFloat32 k32f;
typedef kxFloat64 k64f;
typedef kxByte kByte;
typedef kxChar kChar;
typedef kxInt32 kBool;
typedef kxPointer kPointer;
typedef void * kHandle;
typedef kChar kText16[16];
typedef kChar kText64[64];
typedef kText64 kFileName;
#define kNULL (0)
#define kNIL (kxNIL)
#define kFALSE (0)
#define kTRUE (1)
typedef enum kStatusTag
{
kERROR_HANDLE = -1000, // Handle is invalid
kERROR_PARAMETER, // Parameter is invalid
kERROR_READ_ONLY, // Parameter/action is read only
kERROR_WRITE_ONLY, // Parameter/action is write only
kERROR_TYPE, // Invalid kType
kERROR_MEMORY, // Out of memory
kERROR_BUSY, // System is busy
kERROR_TIMEOUT, // Action timed out
kERROR_OS, // Error encountered in operating system
kERROR_NOTIMPL, // Not implemented
kERROR_DRIVER, // Error in driver
kERROR_STREAM, // Error in stream
kERROR_VERSION, // Error in version number
kERROR_INVALID_GENERATION, // Invalid system generation(era)
kERROR_INVALID_STATE, // Invalid system state
kERROR = 0,
kOK = 1
} kStatus;
#define kSUCCESS(e) ((kStatus)(e) > 0)
#define kCHECK(e) \
do \
{ \
kStatus kSTATUS_VAR = (kStatus)(e); \
if (!kSUCCESS(kSTATUS_VAR)) \
{ \
return kSTATUS_VAR; \
} \
} while(0)
#endif /* #ifndef LMITECH_KLAPI_H_INCLUDED */
یا این یکی...
--------------------------------------------------------------*/
#ifndef LMITECH_KLPROTOCOL_H_INCLUDED
#define LMITECH_KLPROTOCOL_H_INCLUDED
#include <kLApi.h>
// FireSync Host Protocol ports
#define kHOST_COMMAND_PORT 3190
#define kHOST_MANAGEMENT_PORT 3191
#define kHOST_UPGRADE_PORT 3192
// Command enums
typedef enum
{
kHOST_COMMAND_RUN = 0x100D,
kHOST_COMMAND_START = 0x1000,
kHOST_COMMAND_STOP = 0x1001,
kHOST_COMMAND_STANDBY = 0x1002,
kHOST_COMMAND_RESUME = 0x1003,
kHOST_COMMAND_SET_MODE = 0x1004,
kHOST_COMMAND_GET_MODE = 0x1005,
kHOST_COMMAND_WRITE_FILE = 0x1006,
kHOST_COMMAND_READ_FILE = 0x1007,
kHOST_COMMAND_DELETE_FILE = 0x1008,
kHOST_COMMAND_ENUMERATE_SENSORS = 0x1009,
kHOST_COMMAND_GET_START_TIME = 0x100A,
kHOST_COMMAND_DATA_ENABLE = 0x100B,
kHOST_COMMAND_DATA_DISABLE = 0x100C,
kHOST_COMMAND_PING = 0x100E,
kHOST_COMMAND_START_EVENT = 0x1010,
kHOST_COMMAND_STOP_EVENT = 0x1011,
kHOST_COMMAND_GET_START_DELAY = 0x1012,
kHOST_COMMAND_BACKUP = 0x1013,
kHOST_COMMAND_RESTORE = 0x1014,
kHOST_MGMT_COMMAND_START_HEALTH = 0x2000,
kHOST_MGMT_COMMAND_STOP_HEALTH = 0x2001,
kHOST_MGMT_COMMAND_SET_PUBLIC_IP = 0x2002,
kHOST_MGMT_COMMAND_PING = 0x2003,
kHOST_MGMT_COMMAND_GET_PRIVATE_IP = 0x2004,
kHOST_MGMT_COMMAND_SET_PRIVATE_IP = 0x2005,
kHOST_UPGRADE_COMMAND_START = 0x0000,
kHOST_UPGRADE_COMMAND_GET_STATUS = 0x0001,
kHOST_UPGRADE_COMMAND_GET_LOG = 0x0002
} kHostCommand;
// Command return status enums
typedef enum
{
kHOST_ERROR_INVALID_STATE = -1000, // invalid system state for command
kHOST_ERROR_NOT_FOUND = -999,
kHOST_ERROR = 0,
kHOST_OK = 1
} kHostStatus;
typedef enum
{
kHOST_UPGRADE_FAILED = -1,
kHOST_UPGRADE_COMPLETED = 0,
kHOST_UPGRADE_SERVER = 1,
kHOST_UPGRADE_SENSOR = 2,
kHOST_UPGRADE_RESET_SENSOR = 3
} kHostUpgradeStep;
// Command header structures
typedef struct kHostCommandHeaderTag
{
k64s length;
k64s command;
} kHostCommandHeader;
typedef struct kHostReplyHeaderTag
{
k64s length;
k64s command;
k64s status;
} kHostReplyHeader;
typedef struct kHostGenericCmdTag
{
kHostCommandHeader header;
} kHostGenericCommand;
typedef struct kHostGenericReplyTag
{
kHostReplyHeader header;
} kHostGenericReply;
//generic reply
typedef struct kHostStatusReplyTag
{
kHostReplyHeader header;
} kHostStatusReply;
// Sensor system command structures
//kHOST_COMMAND_START
typedef struct kHostStartCommandTag
{
kHostCommandHeader header;
kByte reserved[4];
kByte address[4];
k64s port;
k64u startTime;
} kHostStartCommand;
typedef kHostGenericReply kHostStartReply;
//kHOST_COMMAND_RUN
typedef struct kHostRunCommandTag
{
kHostCommandHeader header;
k64s startTime;
} kHostRunCommand;
typedef kHostGenericReply kHostRunReply;
//kHOST_COMMAND_STOP
typedef struct kHostStopCommandTag
{
kHostCommandHeader header;
} kHostStopCommand;
typedef kHostGenericReply kHostStopReply;
//kHOST_COMMAND_STANDBY
typedef struct kHostStandbyCommandTag
{
kHostCommandHeader header;
} kHostStandbyCommand;
typedef kHostGenericReply kHostStandbyReply;
//kHOST_COMMAND_RESUME
typedef struct kHostResumeCommandTag
{
kHostCommandHeader header;
} kHostResumeCommand;
typedef kHostGenericReply kHostResumeReply;
//server configuration commands
//kHOST_COMMAND_SET_MODE
typedef struct kHostSetModeCommandTag
{
kHostCommandHeader header;
kText16 modeName;
} kHostSetModeCommand;
typedef kHostGenericReply kHostSetModeReply;
//kHOST_COMMAND_GET_MODE
typedef struct kHostGetModeCommandTag
{
kHostCommandHeader header;
} kHostGetModeCommand;
typedef struct kHostGetModeReplyTag
{
kHostReplyHeader header;
kText16 modeName;
} kHostGetModeReply;
//kHOST_COMMAND_GET_SENSORS_INFO
typedef kHostGenericCommand kHostEnumerateSensorsCommand;
typedef struct kHostEnumerateSensorsReplyTag
{
kHostReplyHeader header;
k64s numSensors;
k64s serialNums[1];
} kHostEnumerateSensorsReply;
//kHOST_COMMAND_WRITE_FILE
typedef struct kHostWriteFileCommandTag
{
kHostCommandHeader header;
kFileName fileName;
k64s fileSize;
kByte fileData[1];
} kHostWriteFileCommand;
typedef kHostGenericReply kHostWriteFileReply;
//kHOST_COMMAND_READ_FILE
typedef struct kHostReadFileCommandTag
{
kHostCommandHeader header;
kFileName fileName;
}kHostReadFileCommand;
// WARNING: do not use structure for sizeof()! due to padding fileData is made to be 4 bytes
typedef struct kHostReadFileReplyTag
{
kHostReplyHeader header;
k64s fileSize;
kByte fileData[1];
}kHostReadFileReply;
//kHOST_COMMAND_DELETE_FILE
typedef struct kHostDeleteFileCommandTag
{
kHostCommandHeader header;
kText64 fileName;
} kHostDeleteFileCommand;
typedef struct kHostDeleteFileReplyTag
{
kHostReplyHeader header;
} kHostDeleteFileReply;
//kHOST_COMMAND_GET_START_TIME
typedef kHostGenericCommand kHostGetStartTimeCommand;
typedef struct kHostGetStartTimeReplyTag
{
kHostReplyHeader header;
k64u startTime;
} kHostGetStartTimeReply;
//kHOST_COMMAND_DATA_ENABLE
typedef struct kHostDataEnableCommandTag
{
kHostCommandHeader header;
kByte reserved[4];
kByte address[4];
k64s port;
k64s channelId;
} kHostDataEnableCommand;
typedef kHostGenericReply kHostDataEnableReply;
//kHOST_COMMAND_DATA_DISABLE
typedef struct kHostDataDisableCommandTag
{
kHostCommandHeader header;
k64s channelId;
} kHostDataDisableCommand;
typedef kHostGenericReply kHostDataDisableReply;
//kHOST_COMMAND_PING
typedef struct kHostPingCommandTag
{
kHostCommandHeader header;
k64s timeout;
} kHostPingCommand;
typedef kHostGenericReply kHostPingReply;
// kHOST_COMMAND_START_EVENT
typedef struct kHostStartEventCommandTag
{
kHostCommandHeader header;
kByte reserved[4];
kByte address[4];
k64s port;
} kHostStartEventCommand;
typedef kHostGenericReply kHostStartEventReply;
// kHOST_COMMAND_STOP_EVENT
typedef kHostGenericCommand kHostStopEventCommand;
typedef kHostGenericReply kHostStopEventReply;
// kHOST_COMMAND_GET_START_DELAY
typedef kHostGenericCommand kHostGetStartDelayCommand;
typedef struct kHostGetStartDelayReplyTag
{
kHostReplyHeader header;
k64s startDelay;
} kHostGetStartDelayReply;
// kHOST_COMMAND_BACKUP
typedef kHostGenericCommand kHostBackupCommand;
typedef struct kHostBackupReplyTag
{
kHostReplyHeader header;
k64s fileSize;
kByte fileData[1];
} kHostBackupReply;
// kHOST_COMMAND_RESTORE
typedef struct kHostRestoreCommandTag
{
kHostCommandHeader header;
k64s fileSize;
kByte fileData[1];
} kHostRestoreCommand;
typedef kHostGenericReply kHostRestoreReply;
// ======================== Management command structures =====================
// kHOST_MGMT_COMMAND_START_HEALTH
typedef struct kHostMgmtStartHealthCmdTag
{
kHostCommandHeader header;
kByte reserved[4];
kByte address[4];
k64s port;
} kHostMgmtStartHealthCmd;
typedef kHostGenericReply kHostMgmtStartHealthReply;
// kHOST_MGMT_COMMAND_STOP_HEALTH
typedef kHostGenericCommand kHostMgmtStopHealthCmd;
typedef kHostGenericReply kHostMgmtStopHealthReply;
// kHOST_MGMT_COMMAND_SET_IP
typedef struct kHostMgmtSetPublicIpCmdTag
{
kHostCommandHeader header;
kByte reserved1[4];
kByte address[4];
kByte reserved2[4];
kByte mask[4];
kByte reserved3[4];
kByte gateway[4];
} kHostMgmtSetPublicIpCmd;
typedef kHostGenericReply kHostMgmtSetPublicIpReply;
typedef kHostGenericCommand kHostMgmtGetPrivateIpCmd;
typedef struct kHostMgmtGetPrivateIpReplyTag
{
kHostReplyHeader header;
kByte reserved[4];
kByte address[4];
} kHostMgmtGetPrivateIpReply;
typedef struct kHostMgmtSetPrivateIpCmdTag
{
kHostCommandHeader header;
kByte reserved1[4];
kByte address[4];
} kHostMgmtSetPrivateIpCmd;
typedef kHostGenericReply kHostMgmtSetPrivateIpReply;
//kHOST_COMMAND_PING
typedef struct kHostMgmtPingCommandTag
{
kHostCommandHeader header;
k64s timeout;
} kHostMgmtPingCommand;
typedef kHostGenericReply kHostMgmtPingReply;
// ======================== Upgrade command structures ========================
// kHOST_UPGRADE_COMMAND_START
typedef struct kHostUpgradeStartCmdTag
{
kHostCommandHeader header;
k64s packageSize;
kByte packageData[1];
} kHostUpgradeStartCmd;
typedef kHostGenericReply kHostUpgradeStartReply;
// kHOST_UPGRADE_COMMAND_GET_STATUS
typedef kHostGenericCommand kHostUpgradeGetStatusCmd;
typedef struct kHostUpgradeGetStatusReplyTag
{
kHostReplyHeader header;
k64s step;
k64s stepProgress;
} kHostUpgradeGetStatusReply;
// kHOST_UPGRADE_COMMAND_GET_LOG
typedef kHostGenericCommand kHostUpgradeGetLogCmd;
typedef struct kHostUpgradeGetLogReplyTag
{
kHostReplyHeader header;
k64s logSize;
kChar logText[1];
} kHostUpgradeGetLog;
#endif /* #ifndef LMITECH_KLPROTOCOL_H_INCLUDED */
یا این....
--------------------------------------------------------------*/
#ifndef LMITECH_KLSOCKET_H_INCLUDED
#define LMITECH_KLSOCKET_H_INCLUDED
#include <kLApi.h>
#ifdef KAPI_MS_WINDOWS
# include <winsock2.h>
#elif defined(KAPI_GNU_LINUX)
# include <sys/types.h>
# include <sys/socket.h>
# include <stdlib.h>
# include <string.h>
# include <netinet/in.h>
# include <sys/select.h>
# include <netdb.h>
# include <sys/ioctl.h>
# include <fcntl.h>
#endif
/* Windows socket compatibility */
#ifdef KAPI_GNU_LINUX
typedef unsigned int SOCKET;
typedef const char *LPCSTR;
typedef const char *LPSTR;
typedef struct sockaddr SOCKADDR;
typedef struct sockaddr_in SOCKADDR_IN;
typedef unsigned long DWORD;
typedef struct hostent * LPHOSTENT;
typedef struct hostent HOSTENT;
typedef struct in_addr * LPIN_ADDR;
typedef struct in_addr IN_ADDR;
#define INVALID_SOCKET (SOCKET)(~0)
#define SOCKET_ERROR (-1)
#endif
#include <kLApiBegin.h>
typedef struct {
SOCKET hSocket;
} kSocket;
extern kStatus kLSocketCreate(kSocket **pSocket);
extern kStatus kLSocketDestroy(kSocket *pSocket);
extern kStatus kLSocketRead(kSocket *pSocket, void* buffer, k32u size);
extern kStatus kLSocketWrite(kSocket *pSocket, const void* buffer, k32u size);
extern kStatus kLSocketWriteTo(kSocket *pSocket, unsigned nSocketPort, LPCSTR lpszSocketAddress, const void *buffer, k32u size);
extern kStatus kLSocketOpen(kSocket *pSocket, unsigned nSocketPort, LPCSTR lpszSocketAddress, k32s sockType);
extern kStatus kLSocketClose(kSocket *pSocket);
extern kStatus kLSocketConnect(kSocket *pSocket, LPCSTR lpszHostAddress, unsigned nHostPort);
extern kStatus kLSocketBind(kSocket *pSocket, unsigned nSocketPort, LPCSTR lpszSocketAddress);
extern kStatus kLSocketAccept(kSocket *pSocket, kSocket **pConnectedSocket, SOCKADDR* lpSockAddr, int* lpSockAddrLen);
extern kStatus kLSocketListen(kSocket *pSocket, int nConnectionBacklog);
extern kStatus kLSocketWaitForEvent(kSocket* pSocket, kBool* read, kBool* write, k32u timeoutSec, k32u timeoutUSec, kBool block);
extern kStatus kLSocketGetOpt(kSocket *pSocket, int nLevel, int nOptionName, char *pOptionValue, int *pOptionLen);
extern kStatus kLSocketSetOpt(kSocket *pSocket, int nLevel, int nOptionName, char *pOptionValue, int nOptionLen);
extern SOCKET kLSocketGetSocket(kSocket *pSocket);
extern kStatus kLSocketGetAddress(kSocket *pSocket, k32u *ip, k32u *port);
extern kStatus kLSocketReadPacketFrom(kSocket* pSocket, void* buffer, k32u* size, kChar* addr, k32u addrBufferSize, k32u* port);
extern kStatus kLSocketReadPacket(kSocket* pSocket, void* buffer, k32u* size);
extern kStatus kLSocketWritePacketTo(kSocket* pSocket, const void* buffer, k32u size, const kChar* addr, k32u port);
#include <kLApiEnd.h>
#endif /* #ifndef LMITECH_KLSOCKET_H_INCLUDED */
یک برنامه هست که کارش کنترل اعمال یک دوربین که برای عکس برداری از حیوانات هست. توش چند تا فایل هست که به زبان c نوشته شدند. کسی می تونه کمک کنه و بگه اینا چی اند و چی کار می کنند و یا چی جوری می شه گزیته هاشون رو تغییر داد...
ممنون می شم 10000 بار!
--------------------------------------------------------------*/
#ifndef LMITECH_KLAPI_H_INCLUDED
#define LMITECH_KLAPI_H_INCLUDED
#ifdef __GNUC__
# define KAPI_GCC
#endif
/* Only Windows (MSVC / GCC) and Linux (GCC) are supported */
#ifdef KAPI_MS_WINDOWS
# if !defined(KAPI_GCC) && !defined(KAPI_MSVC)
# error "Only Microsoft Visual Studio and GCC (MinGW) are supported"
# endif
#elif defined(KAPI_GNU_LINUX)
# ifndef KAPI_GCC
# error "Only GCC is supported on Linux"
# endif
#else
# error "What's your operating system?"
#endif
/* Structure field alignment */
#define KAPI_ALIGN_SHIFT 3
#define KAPI_ALIGN 8
/* Compiler/architecure-specific definitions of standard types and decorators */
#ifdef KAPI_MSVC
# define _CRT_SECURE_NO_DEPRECATE
# ifdef _DEBUG
# define _CRTDBG_MAP_ALLOC
# include <stdlib.h>
# include <crtdbg.h>
# endif
# define KAPI_CALL __stdcall
# define KAPI_EXPORT(RETURN_TYPE) RETURN_TYPE KAPI_CALL
typedef unsigned char kxUInt8;
typedef unsigned short kxUInt16;
typedef unsigned int kxUInt32;
typedef unsigned __int64 kxUInt64;
typedef signed char kxInt8;
typedef signed short kxInt16;
typedef signed int kxInt32;
typedef signed __int64 kxInt64;
typedef float kxFloat32;
typedef double kxFloat64;
typedef unsigned char kxByte;
typedef char kxChar;
typedef void* kxPointer;
#elif defined(KAPI_GCC)
# define KAPI_CALL
# define KAPI_EXPORT(RETURN_TYPE) RETURN_TYPE
typedef unsigned char kxUInt8;
typedef unsigned short kxUInt16;
typedef unsigned int kxUInt32;
typedef signed char kxInt8;
typedef signed short kxInt16;
typedef signed int kxInt32;
typedef signed long long kxInt64;
typedef unsigned long long kxUInt64;
typedef float kxFloat32;
typedef double kxFloat64;
typedef unsigned char kxByte;
typedef char kxChar;
typedef void* kxPointer;
#endif
typedef kxUInt8 k1u;
typedef kxUInt8 k8u;
typedef kxUInt16 k16u;
typedef kxUInt32 k32u;
typedef kxUInt64 k64u;
typedef kxInt8 k8s;
typedef kxInt16 k16s;
typedef kxInt32 k32s;
typedef kxInt64 k64s;
typedef kxFloat32 k32f;
typedef kxFloat64 k64f;
typedef kxByte kByte;
typedef kxChar kChar;
typedef kxInt32 kBool;
typedef kxPointer kPointer;
typedef void * kHandle;
typedef kChar kText16[16];
typedef kChar kText64[64];
typedef kText64 kFileName;
#define kNULL (0)
#define kNIL (kxNIL)
#define kFALSE (0)
#define kTRUE (1)
typedef enum kStatusTag
{
kERROR_HANDLE = -1000, // Handle is invalid
kERROR_PARAMETER, // Parameter is invalid
kERROR_READ_ONLY, // Parameter/action is read only
kERROR_WRITE_ONLY, // Parameter/action is write only
kERROR_TYPE, // Invalid kType
kERROR_MEMORY, // Out of memory
kERROR_BUSY, // System is busy
kERROR_TIMEOUT, // Action timed out
kERROR_OS, // Error encountered in operating system
kERROR_NOTIMPL, // Not implemented
kERROR_DRIVER, // Error in driver
kERROR_STREAM, // Error in stream
kERROR_VERSION, // Error in version number
kERROR_INVALID_GENERATION, // Invalid system generation(era)
kERROR_INVALID_STATE, // Invalid system state
kERROR = 0,
kOK = 1
} kStatus;
#define kSUCCESS(e) ((kStatus)(e) > 0)
#define kCHECK(e) \
do \
{ \
kStatus kSTATUS_VAR = (kStatus)(e); \
if (!kSUCCESS(kSTATUS_VAR)) \
{ \
return kSTATUS_VAR; \
} \
} while(0)
#endif /* #ifndef LMITECH_KLAPI_H_INCLUDED */
یا این یکی...
--------------------------------------------------------------*/
#ifndef LMITECH_KLPROTOCOL_H_INCLUDED
#define LMITECH_KLPROTOCOL_H_INCLUDED
#include <kLApi.h>
// FireSync Host Protocol ports
#define kHOST_COMMAND_PORT 3190
#define kHOST_MANAGEMENT_PORT 3191
#define kHOST_UPGRADE_PORT 3192
// Command enums
typedef enum
{
kHOST_COMMAND_RUN = 0x100D,
kHOST_COMMAND_START = 0x1000,
kHOST_COMMAND_STOP = 0x1001,
kHOST_COMMAND_STANDBY = 0x1002,
kHOST_COMMAND_RESUME = 0x1003,
kHOST_COMMAND_SET_MODE = 0x1004,
kHOST_COMMAND_GET_MODE = 0x1005,
kHOST_COMMAND_WRITE_FILE = 0x1006,
kHOST_COMMAND_READ_FILE = 0x1007,
kHOST_COMMAND_DELETE_FILE = 0x1008,
kHOST_COMMAND_ENUMERATE_SENSORS = 0x1009,
kHOST_COMMAND_GET_START_TIME = 0x100A,
kHOST_COMMAND_DATA_ENABLE = 0x100B,
kHOST_COMMAND_DATA_DISABLE = 0x100C,
kHOST_COMMAND_PING = 0x100E,
kHOST_COMMAND_START_EVENT = 0x1010,
kHOST_COMMAND_STOP_EVENT = 0x1011,
kHOST_COMMAND_GET_START_DELAY = 0x1012,
kHOST_COMMAND_BACKUP = 0x1013,
kHOST_COMMAND_RESTORE = 0x1014,
kHOST_MGMT_COMMAND_START_HEALTH = 0x2000,
kHOST_MGMT_COMMAND_STOP_HEALTH = 0x2001,
kHOST_MGMT_COMMAND_SET_PUBLIC_IP = 0x2002,
kHOST_MGMT_COMMAND_PING = 0x2003,
kHOST_MGMT_COMMAND_GET_PRIVATE_IP = 0x2004,
kHOST_MGMT_COMMAND_SET_PRIVATE_IP = 0x2005,
kHOST_UPGRADE_COMMAND_START = 0x0000,
kHOST_UPGRADE_COMMAND_GET_STATUS = 0x0001,
kHOST_UPGRADE_COMMAND_GET_LOG = 0x0002
} kHostCommand;
// Command return status enums
typedef enum
{
kHOST_ERROR_INVALID_STATE = -1000, // invalid system state for command
kHOST_ERROR_NOT_FOUND = -999,
kHOST_ERROR = 0,
kHOST_OK = 1
} kHostStatus;
typedef enum
{
kHOST_UPGRADE_FAILED = -1,
kHOST_UPGRADE_COMPLETED = 0,
kHOST_UPGRADE_SERVER = 1,
kHOST_UPGRADE_SENSOR = 2,
kHOST_UPGRADE_RESET_SENSOR = 3
} kHostUpgradeStep;
// Command header structures
typedef struct kHostCommandHeaderTag
{
k64s length;
k64s command;
} kHostCommandHeader;
typedef struct kHostReplyHeaderTag
{
k64s length;
k64s command;
k64s status;
} kHostReplyHeader;
typedef struct kHostGenericCmdTag
{
kHostCommandHeader header;
} kHostGenericCommand;
typedef struct kHostGenericReplyTag
{
kHostReplyHeader header;
} kHostGenericReply;
//generic reply
typedef struct kHostStatusReplyTag
{
kHostReplyHeader header;
} kHostStatusReply;
// Sensor system command structures
//kHOST_COMMAND_START
typedef struct kHostStartCommandTag
{
kHostCommandHeader header;
kByte reserved[4];
kByte address[4];
k64s port;
k64u startTime;
} kHostStartCommand;
typedef kHostGenericReply kHostStartReply;
//kHOST_COMMAND_RUN
typedef struct kHostRunCommandTag
{
kHostCommandHeader header;
k64s startTime;
} kHostRunCommand;
typedef kHostGenericReply kHostRunReply;
//kHOST_COMMAND_STOP
typedef struct kHostStopCommandTag
{
kHostCommandHeader header;
} kHostStopCommand;
typedef kHostGenericReply kHostStopReply;
//kHOST_COMMAND_STANDBY
typedef struct kHostStandbyCommandTag
{
kHostCommandHeader header;
} kHostStandbyCommand;
typedef kHostGenericReply kHostStandbyReply;
//kHOST_COMMAND_RESUME
typedef struct kHostResumeCommandTag
{
kHostCommandHeader header;
} kHostResumeCommand;
typedef kHostGenericReply kHostResumeReply;
//server configuration commands
//kHOST_COMMAND_SET_MODE
typedef struct kHostSetModeCommandTag
{
kHostCommandHeader header;
kText16 modeName;
} kHostSetModeCommand;
typedef kHostGenericReply kHostSetModeReply;
//kHOST_COMMAND_GET_MODE
typedef struct kHostGetModeCommandTag
{
kHostCommandHeader header;
} kHostGetModeCommand;
typedef struct kHostGetModeReplyTag
{
kHostReplyHeader header;
kText16 modeName;
} kHostGetModeReply;
//kHOST_COMMAND_GET_SENSORS_INFO
typedef kHostGenericCommand kHostEnumerateSensorsCommand;
typedef struct kHostEnumerateSensorsReplyTag
{
kHostReplyHeader header;
k64s numSensors;
k64s serialNums[1];
} kHostEnumerateSensorsReply;
//kHOST_COMMAND_WRITE_FILE
typedef struct kHostWriteFileCommandTag
{
kHostCommandHeader header;
kFileName fileName;
k64s fileSize;
kByte fileData[1];
} kHostWriteFileCommand;
typedef kHostGenericReply kHostWriteFileReply;
//kHOST_COMMAND_READ_FILE
typedef struct kHostReadFileCommandTag
{
kHostCommandHeader header;
kFileName fileName;
}kHostReadFileCommand;
// WARNING: do not use structure for sizeof()! due to padding fileData is made to be 4 bytes
typedef struct kHostReadFileReplyTag
{
kHostReplyHeader header;
k64s fileSize;
kByte fileData[1];
}kHostReadFileReply;
//kHOST_COMMAND_DELETE_FILE
typedef struct kHostDeleteFileCommandTag
{
kHostCommandHeader header;
kText64 fileName;
} kHostDeleteFileCommand;
typedef struct kHostDeleteFileReplyTag
{
kHostReplyHeader header;
} kHostDeleteFileReply;
//kHOST_COMMAND_GET_START_TIME
typedef kHostGenericCommand kHostGetStartTimeCommand;
typedef struct kHostGetStartTimeReplyTag
{
kHostReplyHeader header;
k64u startTime;
} kHostGetStartTimeReply;
//kHOST_COMMAND_DATA_ENABLE
typedef struct kHostDataEnableCommandTag
{
kHostCommandHeader header;
kByte reserved[4];
kByte address[4];
k64s port;
k64s channelId;
} kHostDataEnableCommand;
typedef kHostGenericReply kHostDataEnableReply;
//kHOST_COMMAND_DATA_DISABLE
typedef struct kHostDataDisableCommandTag
{
kHostCommandHeader header;
k64s channelId;
} kHostDataDisableCommand;
typedef kHostGenericReply kHostDataDisableReply;
//kHOST_COMMAND_PING
typedef struct kHostPingCommandTag
{
kHostCommandHeader header;
k64s timeout;
} kHostPingCommand;
typedef kHostGenericReply kHostPingReply;
// kHOST_COMMAND_START_EVENT
typedef struct kHostStartEventCommandTag
{
kHostCommandHeader header;
kByte reserved[4];
kByte address[4];
k64s port;
} kHostStartEventCommand;
typedef kHostGenericReply kHostStartEventReply;
// kHOST_COMMAND_STOP_EVENT
typedef kHostGenericCommand kHostStopEventCommand;
typedef kHostGenericReply kHostStopEventReply;
// kHOST_COMMAND_GET_START_DELAY
typedef kHostGenericCommand kHostGetStartDelayCommand;
typedef struct kHostGetStartDelayReplyTag
{
kHostReplyHeader header;
k64s startDelay;
} kHostGetStartDelayReply;
// kHOST_COMMAND_BACKUP
typedef kHostGenericCommand kHostBackupCommand;
typedef struct kHostBackupReplyTag
{
kHostReplyHeader header;
k64s fileSize;
kByte fileData[1];
} kHostBackupReply;
// kHOST_COMMAND_RESTORE
typedef struct kHostRestoreCommandTag
{
kHostCommandHeader header;
k64s fileSize;
kByte fileData[1];
} kHostRestoreCommand;
typedef kHostGenericReply kHostRestoreReply;
// ======================== Management command structures =====================
// kHOST_MGMT_COMMAND_START_HEALTH
typedef struct kHostMgmtStartHealthCmdTag
{
kHostCommandHeader header;
kByte reserved[4];
kByte address[4];
k64s port;
} kHostMgmtStartHealthCmd;
typedef kHostGenericReply kHostMgmtStartHealthReply;
// kHOST_MGMT_COMMAND_STOP_HEALTH
typedef kHostGenericCommand kHostMgmtStopHealthCmd;
typedef kHostGenericReply kHostMgmtStopHealthReply;
// kHOST_MGMT_COMMAND_SET_IP
typedef struct kHostMgmtSetPublicIpCmdTag
{
kHostCommandHeader header;
kByte reserved1[4];
kByte address[4];
kByte reserved2[4];
kByte mask[4];
kByte reserved3[4];
kByte gateway[4];
} kHostMgmtSetPublicIpCmd;
typedef kHostGenericReply kHostMgmtSetPublicIpReply;
typedef kHostGenericCommand kHostMgmtGetPrivateIpCmd;
typedef struct kHostMgmtGetPrivateIpReplyTag
{
kHostReplyHeader header;
kByte reserved[4];
kByte address[4];
} kHostMgmtGetPrivateIpReply;
typedef struct kHostMgmtSetPrivateIpCmdTag
{
kHostCommandHeader header;
kByte reserved1[4];
kByte address[4];
} kHostMgmtSetPrivateIpCmd;
typedef kHostGenericReply kHostMgmtSetPrivateIpReply;
//kHOST_COMMAND_PING
typedef struct kHostMgmtPingCommandTag
{
kHostCommandHeader header;
k64s timeout;
} kHostMgmtPingCommand;
typedef kHostGenericReply kHostMgmtPingReply;
// ======================== Upgrade command structures ========================
// kHOST_UPGRADE_COMMAND_START
typedef struct kHostUpgradeStartCmdTag
{
kHostCommandHeader header;
k64s packageSize;
kByte packageData[1];
} kHostUpgradeStartCmd;
typedef kHostGenericReply kHostUpgradeStartReply;
// kHOST_UPGRADE_COMMAND_GET_STATUS
typedef kHostGenericCommand kHostUpgradeGetStatusCmd;
typedef struct kHostUpgradeGetStatusReplyTag
{
kHostReplyHeader header;
k64s step;
k64s stepProgress;
} kHostUpgradeGetStatusReply;
// kHOST_UPGRADE_COMMAND_GET_LOG
typedef kHostGenericCommand kHostUpgradeGetLogCmd;
typedef struct kHostUpgradeGetLogReplyTag
{
kHostReplyHeader header;
k64s logSize;
kChar logText[1];
} kHostUpgradeGetLog;
#endif /* #ifndef LMITECH_KLPROTOCOL_H_INCLUDED */
یا این....
--------------------------------------------------------------*/
#ifndef LMITECH_KLSOCKET_H_INCLUDED
#define LMITECH_KLSOCKET_H_INCLUDED
#include <kLApi.h>
#ifdef KAPI_MS_WINDOWS
# include <winsock2.h>
#elif defined(KAPI_GNU_LINUX)
# include <sys/types.h>
# include <sys/socket.h>
# include <stdlib.h>
# include <string.h>
# include <netinet/in.h>
# include <sys/select.h>
# include <netdb.h>
# include <sys/ioctl.h>
# include <fcntl.h>
#endif
/* Windows socket compatibility */
#ifdef KAPI_GNU_LINUX
typedef unsigned int SOCKET;
typedef const char *LPCSTR;
typedef const char *LPSTR;
typedef struct sockaddr SOCKADDR;
typedef struct sockaddr_in SOCKADDR_IN;
typedef unsigned long DWORD;
typedef struct hostent * LPHOSTENT;
typedef struct hostent HOSTENT;
typedef struct in_addr * LPIN_ADDR;
typedef struct in_addr IN_ADDR;
#define INVALID_SOCKET (SOCKET)(~0)
#define SOCKET_ERROR (-1)
#endif
#include <kLApiBegin.h>
typedef struct {
SOCKET hSocket;
} kSocket;
extern kStatus kLSocketCreate(kSocket **pSocket);
extern kStatus kLSocketDestroy(kSocket *pSocket);
extern kStatus kLSocketRead(kSocket *pSocket, void* buffer, k32u size);
extern kStatus kLSocketWrite(kSocket *pSocket, const void* buffer, k32u size);
extern kStatus kLSocketWriteTo(kSocket *pSocket, unsigned nSocketPort, LPCSTR lpszSocketAddress, const void *buffer, k32u size);
extern kStatus kLSocketOpen(kSocket *pSocket, unsigned nSocketPort, LPCSTR lpszSocketAddress, k32s sockType);
extern kStatus kLSocketClose(kSocket *pSocket);
extern kStatus kLSocketConnect(kSocket *pSocket, LPCSTR lpszHostAddress, unsigned nHostPort);
extern kStatus kLSocketBind(kSocket *pSocket, unsigned nSocketPort, LPCSTR lpszSocketAddress);
extern kStatus kLSocketAccept(kSocket *pSocket, kSocket **pConnectedSocket, SOCKADDR* lpSockAddr, int* lpSockAddrLen);
extern kStatus kLSocketListen(kSocket *pSocket, int nConnectionBacklog);
extern kStatus kLSocketWaitForEvent(kSocket* pSocket, kBool* read, kBool* write, k32u timeoutSec, k32u timeoutUSec, kBool block);
extern kStatus kLSocketGetOpt(kSocket *pSocket, int nLevel, int nOptionName, char *pOptionValue, int *pOptionLen);
extern kStatus kLSocketSetOpt(kSocket *pSocket, int nLevel, int nOptionName, char *pOptionValue, int nOptionLen);
extern SOCKET kLSocketGetSocket(kSocket *pSocket);
extern kStatus kLSocketGetAddress(kSocket *pSocket, k32u *ip, k32u *port);
extern kStatus kLSocketReadPacketFrom(kSocket* pSocket, void* buffer, k32u* size, kChar* addr, k32u addrBufferSize, k32u* port);
extern kStatus kLSocketReadPacket(kSocket* pSocket, void* buffer, k32u* size);
extern kStatus kLSocketWritePacketTo(kSocket* pSocket, const void* buffer, k32u size, const kChar* addr, k32u port);
#include <kLApiEnd.h>
#endif /* #ifndef LMITECH_KLSOCKET_H_INCLUDED */