6c1bfbe199ba5daa45b63364cf6fc6197071b931
[owSlave2.git] / tools_cmd / rwOW / ibtmexcw.h
1 /*---------------------------------------------------------------------------
2 * Copyright © 1992-2008 Maxim Integrated Products, All Rights Reserved.
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included
12 * in all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17 * IN NO EVENT SHALL MAXIM INTEGRATED PRODUCTS BE LIABLE FOR ANY CLAIM, DAMAGES
18 * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20 * OTHER DEALINGS IN THE SOFTWARE.
21 *
22 * Except as contained in this notice, the name of Maxim Integrated Products
23 * shall not be used except as stated in the Maxim Integrated Products
24 * Branding Policy.
25 *---------------------------------------------------------------------------
26 * Version 4.01
27 */
28
29 /* includes */
30 #include <stdlib.h>
31 #include <string.h>
32 #include <ctype.h>
33 #include <windows.h>
34 #ifndef _WIN32_WCE
35 #include <stdio.h>
36 #include <conio.h>
37 #include <dos.h>
38 #include <fcntl.h>
39 #include <io.h>
40 #include <time.h>
41 #endif
42
43 /* type defs */
44 typedef unsigned char uchar;
45 typedef unsigned short ushort;
46 typedef unsigned long ulong;
47
48 /* typedef structure sent back by TMEX routines */
49 typedef struct 
50 {
51 uchar name[4];
52 uchar extension;
53 uchar startpage;
54 uchar numpages;
55 uchar attrib;
56 uchar bitmap[32];
57 } FileEntry;
58
59 /* structure to hold directory path */
60 typedef struct
61 {
62 uchar NumEntries; /* number of entries in path 0-10 */
63 char Ref; /* reference character '\' or '.' */
64 char Entries[10][4]; /* sub-directory entry names */ 
65 } DirectoryPath;
66
67 /* Holds info of each object in the Directory list */
68 struct DirNumInfo 
69
70 unsigned char Name[4];
71 unsigned char Extension;
72 char Attrib;
73 };
74
75 /* structure to hold exportable device parameters by family code (3.11) */
76 typedef struct
77 {
78 short features[32];
79 char dscrptn[255];
80 } Specification;
81
82
83 /* Error codes from TMEX functions */
84 #define NO_DEVICE -1 
85 #define WRONG_TYPE -2 
86 #define FILE_READ_ERR -3 
87 #define BUFFER_TOO_SMALL -4 
88 #define HANDLE_NOT_AVAIL -5 
89 #define FILE_NOT_FOUND -6 
90 #define REPEAT_FILE -7 
91 #define HANDLE_NOT_USED -8 
92 #define FILE_WRITE_ONLY -9 
93 #define OUT_OF_SPACE -10 
94 #define FILE_WRITE_ERR -11 
95 #define TMFILE_READ_ONLY -12 
96 #define FUNC_NOT_SUP -13 
97 #define BAD_FILENAME -14 
98 #define CANT_DEL_READ_ONLY -15 
99 #define HANDLE_NOT_EXIST -16 
100 #define ONE_WIRE_PORT_ERROR -17 
101 #define INVALID_DIRECTORY -18 
102 #define DIRECTORY_NOT_EMPTY -19 
103 #define UNABLE_TO_CREATE_DIR -20 
104 #define NO_PROGRAM_JOB -21 
105 #define PROGRAM_WRITE_PROTECT -22
106 #define NON_PROGRAM_PARTS -23 
107 #define ADDFILE_TERMINATED -24 
108 #define TIMEOUT -25 
109 #define INVALID_ARGUMENT -26 
110 #define BAD_ACK -27 
111 #define INVALID_SESSION -200
112 #define NO_BASDRV_FOUND -201
113
114 /* Basic physical level error codes */
115 #define BPORT_NOT_INITIALIZED -1 
116 #define BPORT_NOT_EXIST -2 
117 #define BNO_SUCH_FUNCTION -3 
118
119 /* Transport level error codes */
120 #define TERROR_READ_WRITE -4 
121 #define TBUFFER_TOO_SMALL -5 
122 #define TDEVICE_TOO_SMALL -6 
123 #define TNO_DEVICE -7 
124 #define TBLOCK_TOO_BIG -8 
125 #define TWRONG_TYPE -9 
126 #define TPAGE_REDIRECTED -10
127 #define TPROGRAM_NOT_POSSIBLE -11
128 #define BCOM_FAILURE -12
129 #define BCOM_EVENT -13
130
131 /* for TMOneWireLevel */
132 #define LEVEL_NORMAL 0
133 #define LEVEL_STRONG_PULLUP 1
134 #define LEVEL_BREAK 2
135 #define LEVEL_PROGRAM 3 
136 #define PRIMED_NONE 0
137 #define PRIMED_BIT 1
138 #define PRIMED_BYTE 2 
139 #define LEVEL_READ 1
140 #define LEVEL_SET 0
141
142 /* misc */
143 #define GENERAL_FAIL -2 
144 #define BAD_ARGUMENT 50
145 #define NO_DRIVERS 51
146 #define KEY_ABORT 52
147 #define OUT_MEMORY 53
148 #define NORMAL_EXIT 0
149
150 #define TRUE 1
151 #define FALSE 0
152 #define DIR_READ 1
153 #define DIR_SET 0
154 #define DIR_REMOVE 1
155 #define DIR_MAKE 0
156
157 /* for specification */
158 #define NOMEM 0
159 #define NVRAM 1
160 #define EPROM1 2
161 #define EPROM2 3
162 #define EPROM3 4
163 #define EEPROM1 5
164 #define MNVRAM 6
165 #define EEPROM2 7
166 #define NVRAM2 8
167 #define NVRAM3 9 
168 #define FTR_REG_PAGES 0
169 #define FTR_REG_LEN 1
170 #define FTR_STAT_PAGES 2
171 #define FTR_STAT_LEN 3
172 #define FTR_MAX_COM 4 
173 #define FTR_MEM_TYPE 5
174
175 // session
176 extern long __fastcall TMExtendedStartSession(short, short, void far *);
177 extern short __fastcall TMValidSession(long); 
178 extern short __fastcall TMEndSession(long); 
179 extern short __fastcall Get_Version(char far *); 
180 // file_operations
181 extern short __fastcall TMFirstFile(long, void far *, FileEntry far *); 
182 extern short __fastcall TMNextFile(long, void far *, FileEntry far *);
183 extern short __fastcall TMOpenFile(long, void far *, FileEntry far *);
184 extern short __fastcall TMCreateFile(long, void far *, short far *, FileEntry far *);
185 extern short __fastcall TMCloseFile(long, void far *, short);
186 extern short __fastcall TMReadFile(long, void far *, short, uchar far *, short);
187 extern short __fastcall TMWriteFile(long, void far *, short, uchar far *, short);
188 extern short __fastcall TMDeleteFile(long, void far *, FileEntry far *);
189 extern short __fastcall TMFormat(long, void far *);
190 extern short __fastcall TMAttribute(long, void far *, short, FileEntry far *);
191 extern short __fastcall TMReNameFile(long, void far *, short, FileEntry far *); 
192 extern short __fastcall TMChangeDirectory(long, void far *, short, DirectoryPath far *); 
193 extern short __fastcall TMDirectoryMR(long, void far *, short, FileEntry far *);
194 extern short __fastcall TMCreateProgramJob(long, void far *);
195 extern short __fastcall TMDoProgramJob(long, void far *);
196 extern short __fastcall TMWriteAddFile(long, void far *, short, short, short, uchar far *, short);
197 extern short __fastcall TMTerminateAddFile(long, void far *, FileEntry far *);
198 extern short __fastcall TMGetFamilySpec(long, void far *, Specification *); 
199 // transport
200 extern short __fastcall TMReadPacket(long, void far *, short, uchar far *, short);
201 extern short __fastcall TMWritePacket(long, void far *, short, uchar far *, short);
202 extern short __fastcall TMBlockIO(long, uchar far *, short);
203 extern short __fastcall TMExtendedReadPage(long, void far *, short, uchar far *, short);
204 extern short __fastcall TMProgramByte(long, void far *, short, short, short, short far *, short);
205 extern short __fastcall TMProgramBlock(long, void far *, uchar far *, short, short, short far *); /* (3.11) */
206 extern long __fastcall TMCRC(short, uchar far *, ushort, short); 
207 // network
208 extern short __fastcall TMSkipFamily(long, void far *); 
209 extern short __fastcall TMFamilySearchSetup(long, void far *, short); 
210 extern short __fastcall TMFirst(long, void far *);
211 extern short __fastcall TMNext(long, void far *);
212 extern short __fastcall TMAccess(long, void far *);
213 extern short __fastcall TMOverAccess(long, void far *);
214 extern short __fastcall TMStrongAccess(long, void far *);
215 extern short __fastcall TMStrongAlarmAccess(long, void far *);
216 extern short __fastcall TMRom(long, void far *, short far *);
217 extern short __fastcall TMFirstAlarm(long, void far *);
218 extern short __fastcall TMNextAlarm(long, void far *); 
219 extern short __fastcall TMAutoOverDrive(long, void far *, short); 
220 extern short __fastcall TMSearch(short, short, short, short); 
221 // hardware_specific
222 extern short __fastcall TMSetup(long);
223 extern short __fastcall TMTouchByte(long, short);
224 extern short __fastcall TMTouchReset(long);
225 extern short __fastcall TMTouchBit(long, short);
226 extern short __fastcall TMClose(long);
227 extern short __fastcall TMProgramPulse(long); 
228 extern short __fastcall TMOneWireCom(long, short, short); 
229 extern short __fastcall TMOneWireLevel(long, short, short, short); 
230 extern short __fastcall TMGetTypeVersion(short,char far *); 
231 extern short __fastcall TMBlockStream(long, uchar far *, short);
232 extern short __fastcall TMGetAdapterSpec(long, Specification far *); 
233 extern short __fastcall TMReadDefaultPort(short far *, short far *); 
234