connectivity/com.nokia.tcf/native/TCFNative/TCFClient/TCFCppApi.h
changeset 60 9d2210c8eed2
equal deleted inserted replaced
59:c892c53c664e 60:9d2210c8eed2
       
     1 /*
       
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of the License "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description: 
       
    15 *
       
    16 */
       
    17 #ifndef __TCFCPPAPI_H__
       
    18 #define __TCFCPPAPI_H__
       
    19 
       
    20 #include "TCErrorConstants.h"
       
    21 
       
    22 #ifdef __cplusplus
       
    23 extern "C" {
       
    24 #endif
       
    25 
       
    26 #ifdef TCFCLIENT_EXPORTS
       
    27 #define TCF_EXP __declspec(dllexport)
       
    28 #else
       
    29 #define TCF_EXP __declspec(dllimport)
       
    30 #endif
       
    31 
       
    32 #define TCF_CALL
       
    33 
       
    34 // TCP/IP
       
    35 #define MAX_IPADDRESS_SIZE (20)
       
    36 #define MAX_PORT_SIZE	(6)
       
    37 typedef struct tagTCFCppTcpConnectData 
       
    38 {
       
    39 	char ipAddress[MAX_IPADDRESS_SIZE];	// e.g., "127.0.0.1"
       
    40 	char ipPort[MAX_PORT_SIZE];		// e.g., "7654"
       
    41 } *pTCFCppTcpConnectData, TCFCppTcpConnectData;
       
    42 
       
    43 // Virtual Serial (BT and USB over Serial port)
       
    44 #define MAX_COMPORT_SIZE	(20)
       
    45 typedef struct tagTCFCppVirtualSerialConnectData
       
    46 {
       
    47 	char comPort[MAX_COMPORT_SIZE];		// only COM port required: e.g. COM0
       
    48 } *pTCFCppVirtualSerialConnectData, TCFCppVirtualSerialConnectData;
       
    49 
       
    50 // Real Serial
       
    51 enum eTCFCppFlowControl
       
    52 {
       
    53 	eTCFCppFlowControlNone,
       
    54 	eTCFCppFlowControlHW,
       
    55 	eTCFCppFlowControlSW,
       
    56 };
       
    57 enum eTCFCppStopBits
       
    58 {
       
    59 	eTCFCppStopBits1,
       
    60 	eTCFCppStopBits15,
       
    61 	eTCFCppStopBits2,
       
    62 };
       
    63 enum eTCFCppParity
       
    64 {
       
    65 	eTCFCppParityNone,
       
    66 	eTCFCppParityOdd,
       
    67 	eTCFCppParityEven,
       
    68 };
       
    69 
       
    70 typedef struct tagTCFCppRealSerialConnectData
       
    71 {
       
    72 	eTCFCppFlowControl flowControl;
       
    73 	eTCFCppStopBits stopBits;
       
    74 	eTCFCppParity parity;
       
    75 	DWORD baudRate;
       
    76 	DWORD dataBits;
       
    77 	char comPort[MAX_COMPORT_SIZE];
       
    78 } *pTCFCppRealSerialConnectData, TCFCppRealSerialConnectData;
       
    79 
       
    80 // Real USB
       
    81 #define MAX_USBDEVICE_SIZE	(100)
       
    82 typedef struct tagTCFCppUSBConnectData
       
    83 {
       
    84 	char device[MAX_USBDEVICE_SIZE];
       
    85 } *pTCFCppUSBConnectData, TCFCppUSBConnectData;
       
    86 
       
    87 #define MAX_DECODE_FORMAT		(16)
       
    88 #define MAX_CONNECTION_TYPE		(16)
       
    89 typedef struct tagTCFCppConnectData 
       
    90 {
       
    91 	long retryInterval;								// retry interval in seconds when port access is lost
       
    92 	long retryTimeout;								// retry timeout in seconds when port access is lost
       
    93 	long traceBoxChannel;							// Tracebox parameter
       
    94 	char decodeFormat[MAX_DECODE_FORMAT];				// protocol decode format on incoming messages
       
    95 	char connectType[MAX_CONNECTION_TYPE];					// connection type
       
    96 	TCFCppTcpConnectData tcpSettings;				// TCP/IP
       
    97 	TCFCppVirtualSerialConnectData virtualSerialSettings;	// Virtual serial
       
    98 	TCFCppRealSerialConnectData realSerialSettings;			// Real Serial
       
    99 	TCFCppUSBConnectData usbSettings;				// Real USB
       
   100 } *pTCFCppConnectData, TCFCppConnectData;
       
   101 
       
   102 // Various options for this client
       
   103 // Incoming message handling
       
   104 enum eTCFCppUnWrapFormat
       
   105 {
       
   106 	eTCFCppNone,									// return whole message (including protocol)
       
   107 	eTCFCppDeleteHeader,							// return only message data (excluding headers)
       
   108 };
       
   109 // Outgoing message encoding options for this client
       
   110 enum eTCFCppEncodeFormat
       
   111 {
       
   112 	eTCFCppEncodeNone,					// leave message as-is
       
   113 	eTCFCppEncode,					// encode message using decode format
       
   114 };
       
   115 // input stream overflow
       
   116 enum eTCPCppStreamOverflowOption
       
   117 {
       
   118 	eTCPCppStreamOverflowOff,			// no overflow to file
       
   119 	eTCPCppStreamOverflowOn,			// overflow to file
       
   120 };
       
   121 #define MAX_INPUTSTREAMPATH (2048L)
       
   122 
       
   123 typedef struct tagTCFCppMessageOptions
       
   124 {
       
   125 	long inputStreamSize;							// input stream size
       
   126 //	eTCPCppStreamOverflowOption streamOverflowOption;	// stream overflow option
       
   127 //	char overflowFile[MAX_INPUTSTREAMPATH];						// overflow file to use
       
   128 	eTCFCppUnWrapFormat unWrapFormat;				// message unwrapping option
       
   129 	long ostVersion;								// OST version to use for decoding messages
       
   130 } *pTCFCppMessageOptions, TCFCppMessageOptions;
       
   131 
       
   132 #define MAX_VERSION_STRING		(80)
       
   133 #define MAX_MESSAGEIDS			(256)
       
   134 typedef struct tagTCFCppMessageIds
       
   135 {
       
   136 	long numberIds;
       
   137 	BYTE messageIds[MAX_MESSAGEIDS];
       
   138 } *pTCFCppMessageIds, TCFCppMessageIds;
       
   139 
       
   140 #define MAX_SENDMESSAGE			(64*1024L+12)
       
   141 typedef struct tagTCFCppMessage
       
   142 {
       
   143 	eTCFCppEncodeFormat encodeFormat;	// encode or do not encode protocol using current protocol
       
   144 	long ostVersion;						// OST version to use when above and encodeFormat = "ost"
       
   145 	BOOL useMyId;							// format for protocol
       
   146 	BYTE myId;								// my message ID to use (if useMyId=true)
       
   147 } *pTCFCppMessage, TCFCppMessage;
       
   148 
       
   149 // APIs
       
   150 
       
   151 TCF_EXP long TCF_CALL TCFConnect(pTCFCppConnectData inConnection, pTCFCppMessageOptions inMessageOptions, pTCFCppMessageIds inMessageIds, long* outClientId);
       
   152 TCF_EXP long TCF_CALL TCFDisconnect(long inClientId);
       
   153 TCF_EXP long TCF_CALL TCFGetVersions(long inClientId, long& outNumberVersions, char** outVersions);
       
   154 TCF_EXP long TCF_CALL TCFGetConnections(long& outNumberConnections, pTCFCppConnectData* outConnections);
       
   155 TCF_EXP long TCF_CALL TCFSendMessage(long inClientId, pTCFCppMessage inMessage, long length, BYTE* data);
       
   156 TCF_EXP long TCF_CALL TCFStart(long inClientId);
       
   157 TCF_EXP long TCF_CALL TCFStop(long inClientId);
       
   158 TCF_EXP long TCF_CALL TCFSetMessageIds(long inClientId, pTCFCppMessageIds inMessageIds);
       
   159 TCF_EXP long TCF_CALL TCFPollInputStream(long inClientId, long& outLength);
       
   160 TCF_EXP long TCF_CALL TCFReadInputStream(long inClientId, pTCFCppMessage outMessage, long& inLength, BYTE* outData);
       
   161 TCF_EXP BOOL TCF_CALL TCFPollError(long inClientId, int* outErrorCode, BOOL* outHasOSErrorCode, long* outOSErrorCode);
       
   162 
       
   163 
       
   164 typedef long (*TCFCONNECT)(pTCFCppConnectData inConnection, pTCFCppMessageOptions inMessageOptions, pTCFCppMessageIds inMessageIds, long* outClientId);
       
   165 #define TCFCONNECT_FNNAME	"TCFConnect"
       
   166 
       
   167 typedef long (*TCFDISCONNECT)(long inClientId);
       
   168 #define TCFDISCONNECT_FNNAME	"TCFDisconnect"
       
   169 
       
   170 typedef long (*TCFGETVERIONS)(long inClientId, long& outNumberVersions, char** outVersions);
       
   171 #define TCFGETVERIONS_FNNAME	"TCFGetVersions"
       
   172 
       
   173 typedef long (*TCFGETCONNECTIONS)(long& outNumberConnections, pTCFCppConnectData* outConnections);
       
   174 #define TCFGETCONNECTIONS_FNNAME	"TCFGetConnections"
       
   175 
       
   176 typedef long (*TCFSENDMESSAGE)(long inClientId, pTCFCppMessage inMessage, long length, BYTE* data);
       
   177 #define TCFSENDMESSAGE_FNNAME	"TCFSendMessage"
       
   178 
       
   179 typedef long (*TCFSTART)(long inClientId);
       
   180 #define TCFSTART_FNNAME	"TCFStart"
       
   181 
       
   182 typedef long (*TCFSTOP)(long inClientId);
       
   183 #define TCFSTOP_FNNAME	"TCFStop"
       
   184 
       
   185 typedef long (*TCFSETMESSAGEIDS)(long inClientId, pTCFCppMessageIds inMessageIds);
       
   186 #define TCFSETMESSAGEIDS_FNNAME	"TCFSetMessageIds"
       
   187 
       
   188 typedef long (*TCFPOLLINPUTSTREAM)(long inClientId, long& outLength);
       
   189 #define TCFPOLLINPUTSTREAM_FNNAME	"TCFPollInputStream"
       
   190 
       
   191 typedef long (*TCFREADINPUTSTREAM)(long inClientId, pTCFCppMessage outMessage, long& inLength, BYTE* outData);
       
   192 #define TCFREADINPUTSTREAM_FNNAME	"TCFReadInputStream"
       
   193 
       
   194 typedef long (*TCFPOLLERROR)(long inClientId, int* outErrorCode, BOOL* outHasOSErrorCode, long* outOSErrorCode);
       
   195 #define TCFPOLLERROR_FNNAME	"TCFPollError"
       
   196 
       
   197 #ifdef __cplusplus
       
   198 }
       
   199 #endif
       
   200 
       
   201 
       
   202 #endif // __TCFCPPAPI_H__