-//---------------------------------------------------------------------------
-// Copyright (C) 2000 Dallas Semiconductor Corporation, All Rights Reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the "Software"),
-// to deal in the Software without restriction, including without limitation
-// the rights to use, copy, modify, merge, publish, distribute, sublicense,
-// and/or sell copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-// IN NO EVENT SHALL DALLAS SEMICONDUCTOR BE LIABLE FOR ANY CLAIM, DAMAGES
-// OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-//
-// Except as contained in this notice, the name of Dallas Semiconductor
-// shall not be used except as stated in the Dallas Semiconductor
-// Branding Policy.
-//---------------------------------------------------------------------------
-//
-// ownet.h - Include file for 1-Wire Net library
-//
-// Version: 2.10
-//
-// History: 1.02 -> 1.03 Make sure uchar is not defined twice.
-// 1.03 -> 2.00 Changed 'MLan' to 'ow'.
-// 2.00 -> 2.01 Added error handling. Added circular-include check.
-// 2.01 -> 2.10 Added raw memory error handling and SMALLINT
-// 2.10 -> 3.00 Added memory bank functionality
-// Added file I/O operations
-//
-
-#ifndef OWNET_H
-#define OWNET_H
-
-//--------------------------------------------------------------//
-// Common Includes to ownet applications
-//--------------------------------------------------------------//
-#include <stdlib.h>
-
-
-//--------------------------------------------------------------//
-// Target Specific Information
-//--------------------------------------------------------------//
-//--------------------------------------------------------------//
-// Handhelds (PalmOS, WinCE)
-//--------------------------------------------------------------//
-#ifdef __MC68K__
- //MC68K is the type of processor in the PILOT
- //Metrowerk's CodeWarrior defines this symbol
- #include <string.h>
- #ifndef strcmp
- #include <StringMgr.h>
- #define strcmp StrCompare
- #endif
- #include <file_struc.h>
-#endif
-
-#ifdef _WIN32_WCE
- //All of our projects had this flag defined by default (_WIN32_WCE),
- //but I'm not 100% positive that this is _the_ definitive
- //flag to use to identify a WinCE system.
- #include "WinCElnk.h"
- #ifndef FILE
- #define FILE int
- extern int sprintf(char *buffer, char *format,...);
- extern void fprintf(FILE *fp, char *format,...);
- extern void printf(char *format,...);
- #endif
-#endif
-
-#if !defined(_WIN32_WCE) && !defined(__MC68K__)
- #include <stdio.h>
-#endif
-
-#ifdef __C51__
- #define FILE int
- #define exit(c) return
- typedef unsigned int ushort;
- typedef unsigned long ulong;
- #define SMALLINT uchar
-#endif
-
-#ifdef __ICCMAXQ__
- #define FILE int
- #define stdout 0
- #define stdin 1
- #define stderr 2
- typedef unsigned int ushort;
- typedef unsigned long ulong;
- #define SMALLINT short
- #define main micro_main
- #define real_main main
- #define SMALL_MEMORY_TARGET
-#endif
-
-
-//--------------------------------------------------------------//
-// Typedefs
-//--------------------------------------------------------------//
-#ifndef SMALLINT
- //
- // purpose of smallint is for compile-time changing of formal
- // parameters and return values of functions. For each target
- // machine, an integer is alleged to represent the most "simple"
- // number representable by that architecture. This should, in
- // most cases, produce optimal code for that particular arch.
- // BUT... The majority of compilers designed for embedded
- // processors actually keep an int at 16 bits, although the
- // architecture might only be comfortable with 8 bits.
- // The default size of smallint will be the same as that of
- // an integer, but this allows for easy overriding of that size.
- //
- // NOTE:
- // In all cases where a smallint is used, it is assumed that
- // decreasing the size of this integer to something as low as
- // a single byte _will_not_ change the functionality of the
- // application. e.g. a loop counter that will iterate through
- // several kilobytes of data should not be SMALLINT. The most
- // common place you'll see smallint is for boolean return types.
- //
- #define SMALLINT int
-#endif
-
-// setting max baud
-#ifdef _WINDOWS
- // 0x02 = PARAMSET_19200
-#define MAX_BAUD 0x02
-#else
- // 0x06 = PARMSET_115200
-#define MAX_BAUD 0x06
-#endif
-
-#ifndef OW_UCHAR
- #define OW_UCHAR
- typedef unsigned char uchar;
- #if !defined(__MINGW32__) && (defined(__CYGWIN__) || defined(__GNUC__))
- typedef unsigned long ulong;
- //ushort already defined in sys/types.h
- #include <sys/types.h>
- #else
- #if defined(_WIN32) || defined(WIN32) || defined(__MC68K__) || defined(_WIN32_WCE) || defined(_DOS) || defined(_WINDOWS) || defined(__MINGW32__)
- typedef unsigned short ushort;
- typedef unsigned long ulong;
- #endif
- #endif
- #ifdef __sun__
- #include <sys/types.h>
- #endif
- #ifdef SDCC
- //intent of ushort is 2 bytes unsigned.
- //for ds390 in sdcc, an int, not a short,
- //is 2 bytes.
- typedef unsigned int ushort;
- #endif
-#endif
-
-// general defines
-#define WRITE_FUNCTION 1
-#define READ_FUNCTION 0
-
-// error codes
-// todo: investigate these and replace with new Error Handling library
-#define READ_ERROR -1
-#define INVALID_DIR -2
-#define NO_FILE -3
-#define WRITE_ERROR -4
-#define WRONG_TYPE -5
-#define FILE_TOO_BIG -6
-
-// Misc
-#define FALSE 0
-#define TRUE 1
-
-#ifndef MAX_PORTNUM
- #define MAX_PORTNUM 16
-#endif
-
-// mode bit flags
-#define MODE_NORMAL 0x00
-#define MODE_OVERDRIVE 0x01
-#define MODE_STRONG5 0x02
-#define MODE_PROGRAM 0x04
-#define MODE_BREAK 0x08
-
-// Output flags
-#define LV_ALWAYS 2
-#define LV_OPTIONAL 1
-#define LV_VERBOSE 0
-
-//--------------------------------------------------------------//
-// Error handling
-//--------------------------------------------------------------//
-extern int owGetErrorNum(void);
-extern int owHasErrors(void);
-
-//Clears the stack.
-#define OWERROR_CLEAR() while(owHasErrors()) owGetErrorNum();
-
-#ifdef DEBUG
- //Raises an exception with extra debug info
- #define OWERROR(err) owRaiseError(err,__LINE__,__FILE__)
- extern void owRaiseError(int,int,char*);
- #define OWASSERT(s,err,ret) if(!(s)){owRaiseError((err),__LINE__,__FILE__);return (ret);}
-#else
- //Raises an exception with just the error code
- #define OWERROR(err) owRaiseError(err)
- extern void owRaiseError(int);
- #define OWASSERT(s,err,ret) if(!(s)){owRaiseError((err));return (ret);}
-#endif
-
-#ifdef SMALL_MEMORY_TARGET
- #define OWERROR_DUMP(fileno) /*no-op*/;
-#else
- //Prints the stack out to the given file.
- #define OWERROR_DUMP(fileno) while(owHasErrors()) owPrintErrorMsg(fileno);
- extern void owPrintErrorMsg(FILE *);
- extern void owPrintErrorMsgStd();
- extern char *owGetErrorMsg(int);
-#endif
-
-#define OWERROR_NO_ERROR_SET 0
-#define OWERROR_NO_DEVICES_ON_NET 1
-#define OWERROR_RESET_FAILED 2
-#define OWERROR_SEARCH_ERROR 3
-#define OWERROR_ACCESS_FAILED 4
-#define OWERROR_DS2480_NOT_DETECTED 5
-#define OWERROR_DS2480_WRONG_BAUD 6
-#define OWERROR_DS2480_BAD_RESPONSE 7
-#define OWERROR_OPENCOM_FAILED 8
-#define OWERROR_WRITECOM_FAILED 9
-#define OWERROR_READCOM_FAILED 10
-#define OWERROR_BLOCK_TOO_BIG 11
-#define OWERROR_BLOCK_FAILED 12
-#define OWERROR_PROGRAM_PULSE_FAILED 13
-#define OWERROR_PROGRAM_BYTE_FAILED 14
-#define OWERROR_WRITE_BYTE_FAILED 15
-#define OWERROR_READ_BYTE_FAILED 16
-#define OWERROR_WRITE_VERIFY_FAILED 17
-#define OWERROR_READ_VERIFY_FAILED 18
-#define OWERROR_WRITE_SCRATCHPAD_FAILED 19
-#define OWERROR_COPY_SCRATCHPAD_FAILED 20
-#define OWERROR_INCORRECT_CRC_LENGTH 21
-#define OWERROR_CRC_FAILED 22
-#define OWERROR_GET_SYSTEM_RESOURCE_FAILED 23
-#define OWERROR_SYSTEM_RESOURCE_INIT_FAILED 24
-#define OWERROR_DATA_TOO_LONG 25
-#define OWERROR_READ_OUT_OF_RANGE 26
-#define OWERROR_WRITE_OUT_OF_RANGE 27
-#define OWERROR_DEVICE_SELECT_FAIL 28
-#define OWERROR_READ_SCRATCHPAD_VERIFY 29
-#define OWERROR_COPY_SCRATCHPAD_NOT_FOUND 30
-#define OWERROR_ERASE_SCRATCHPAD_NOT_FOUND 31
-#define OWERROR_ADDRESS_READ_BACK_FAILED 32
-#define OWERROR_EXTRA_INFO_NOT_SUPPORTED 33
-#define OWERROR_PG_PACKET_WITHOUT_EXTRA 34
-#define OWERROR_PACKET_LENGTH_EXCEEDS_PAGE 35
-#define OWERROR_INVALID_PACKET_LENGTH 36
-#define OWERROR_NO_PROGRAM_PULSE 37
-#define OWERROR_READ_ONLY 38
-#define OWERROR_NOT_GENERAL_PURPOSE 39
-#define OWERROR_READ_BACK_INCORRECT 40
-#define OWERROR_INVALID_PAGE_NUMBER 41
-#define OWERROR_CRC_NOT_SUPPORTED 42
-#define OWERROR_CRC_EXTRA_INFO_NOT_SUPPORTED 43
-#define OWERROR_READ_BACK_NOT_VALID 44
-#define OWERROR_COULD_NOT_LOCK_REDIRECT 45
-#define OWERROR_READ_STATUS_NOT_COMPLETE 46
-#define OWERROR_PAGE_REDIRECTION_NOT_SUPPORTED 47
-#define OWERROR_LOCK_REDIRECTION_NOT_SUPPORTED 48
-#define OWERROR_READBACK_EPROM_FAILED 49
-#define OWERROR_PAGE_LOCKED 50
-#define OWERROR_LOCKING_REDIRECTED_PAGE_AGAIN 51
-#define OWERROR_REDIRECTED_PAGE 52
-#define OWERROR_PAGE_ALREADY_LOCKED 53
-#define OWERROR_WRITE_PROTECTED 54
-#define OWERROR_NONMATCHING_MAC 55
-#define OWERROR_WRITE_PROTECT 56
-#define OWERROR_WRITE_PROTECT_SECRET 57
-#define OWERROR_COMPUTE_NEXT_SECRET 58
-#define OWERROR_LOAD_FIRST_SECRET 59
-#define OWERROR_POWER_NOT_AVAILABLE 60
-#define OWERROR_XBAD_FILENAME 61
-#define OWERROR_XUNABLE_TO_CREATE_DIR 62
-#define OWERROR_REPEAT_FILE 63
-#define OWERROR_DIRECTORY_NOT_EMPTY 64
-#define OWERROR_WRONG_TYPE 65
-#define OWERROR_BUFFER_TOO_SMALL 66
-#define OWERROR_NOT_WRITE_ONCE 67
-#define OWERROR_FILE_NOT_FOUND 68
-#define OWERROR_OUT_OF_SPACE 69
-#define OWERROR_TOO_LARGE_BITNUM 70
-#define OWERROR_NO_PROGRAM_JOB 71
-#define OWERROR_FUNC_NOT_SUP 72
-#define OWERROR_HANDLE_NOT_USED 73
-#define OWERROR_FILE_WRITE_ONLY 74
-#define OWERROR_HANDLE_NOT_AVAIL 75
-#define OWERROR_INVALID_DIRECTORY 76
-#define OWERROR_HANDLE_NOT_EXIST 77
-#define OWERROR_NONMATCHING_SNUM 78
-#define OWERROR_NON_PROGRAM_PARTS 79
-#define OWERROR_PROGRAM_WRITE_PROTECT 80
-#define OWERROR_FILE_READ_ERR 81
-#define OWERROR_ADDFILE_TERMINATED 82
-#define OWERROR_READ_MEMORY_PAGE_FAILED 83
-#define OWERROR_MATCH_SCRATCHPAD_FAILED 84
-#define OWERROR_ERASE_SCRATCHPAD_FAILED 85
-#define OWERROR_READ_SCRATCHPAD_FAILED 86
-#define OWERROR_SHA_FUNCTION_FAILED 87
-#define OWERROR_NO_COMPLETION_BYTE 88
-#define OWERROR_WRITE_DATA_PAGE_FAILED 89
-#define OWERROR_COPY_SECRET_FAILED 90
-#define OWERROR_BIND_SECRET_FAILED 91
-#define OWERROR_INSTALL_SECRET_FAILED 92
-#define OWERROR_VERIFY_SIG_FAILED 93
-#define OWERROR_SIGN_SERVICE_DATA_FAILED 94
-#define OWERROR_VERIFY_AUTH_RESPONSE_FAILED 95
-#define OWERROR_ANSWER_CHALLENGE_FAILED 96
-#define OWERROR_CREATE_CHALLENGE_FAILED 97
-#define OWERROR_BAD_SERVICE_DATA 98
-#define OWERROR_SERVICE_DATA_NOT_UPDATED 99
-#define OWERROR_CATASTROPHIC_SERVICE_FAILURE 100
-#define OWERROR_LOAD_FIRST_SECRET_FAILED 101
-#define OWERROR_MATCH_SERVICE_SIGNATURE_FAILED 102
-#define OWERROR_KEY_OUT_OF_RANGE 103
-#define OWERROR_BLOCK_ID_OUT_OF_RANGE 104
-#define OWERROR_PASSWORDS_ENABLED 105
-#define OWERROR_PASSWORD_INVALID 106
-#define OWERROR_NO_READ_ONLY_PASSWORD 107
-#define OWERROR_NO_READ_WRITE_PASSWORD 108
-#define OWERROR_OW_SHORTED 109
-#define OWERROR_ADAPTER_ERROR 110
-#define OWERROR_EOP_COPY_SCRATCHPAD_FAILED 111
-#define OWERROR_EOP_WRITE_SCRATCHPAD_FAILED 112
-#define OWERROR_HYGRO_STOP_MISSION_UNNECESSARY 113
-#define OWERROR_HYGRO_STOP_MISSION_ERROR 114
-#define OWERROR_PORTNUM_ERROR 115
-#define OWERROR_LEVEL_FAILED 116
-#define OWERROR_PASSWORD_NOT_SET 117
-#define OWERROR_LATCH_NOT_SET 118
-#define OWERROR_LIBUSB_OPEN_FAILED 119
-#define OWERROR_LIBUSB_DEVICE_ALREADY_OPENED 120
-#define OWERROR_LIBUSB_SET_CONFIGURATION_ERROR 121
-#define OWERROR_LIBUSB_CLAIM_INTERFACE_ERROR 122
-#define OWERROR_LIBUSB_SET_ALTINTERFACE_ERROR 123
-#define OWERROR_LIBUSB_NO_ADAPTER_FOUND 124
-
-// One Wire functions defined in ownetu.c
-SMALLINT owFirst(int portnum, SMALLINT do_reset, SMALLINT alarm_only);
-SMALLINT owNext(int portnum, SMALLINT do_reset, SMALLINT alarm_only);
-void owSerialNum(int portnum, uchar *serialnum_buf, SMALLINT do_read);
-void owFamilySearchSetup(int portnum, SMALLINT search_family);
-void owSkipFamily(int portnum);
-SMALLINT owAccess(int portnum);
-SMALLINT owVerify(int portnum, SMALLINT alarm_only);
-SMALLINT owOverdriveAccess(int portnum);
-
-
-// external One Wire functions defined in owsesu.c
- SMALLINT owAcquire(int portnum, char *port_zstr);
- int owAcquireEx(char *port_zstr);
- void owRelease(int portnum);
-
-// external One Wire functions defined in findtype.c
-// SMALLINT FindDevices(int,uchar FamilySN[][8],SMALLINT,int);
-
-// external One Wire functions from link layer owllu.c
-SMALLINT owTouchReset(int portnum);
-SMALLINT owTouchBit(int portnum, SMALLINT sendbit);
-SMALLINT owTouchByte(int portnum, SMALLINT sendbyte);
-SMALLINT owWriteByte(int portnum, SMALLINT sendbyte);
-SMALLINT owReadByte(int portnum);
-SMALLINT owSpeed(int portnum, SMALLINT new_speed);
-SMALLINT owLevel(int portnum, SMALLINT new_level);
-SMALLINT owProgramPulse(int portnum);
-SMALLINT owWriteBytePower(int portnum, SMALLINT sendbyte);
-SMALLINT owReadBytePower(int portnum);
-SMALLINT owHasPowerDelivery(int portnum);
-SMALLINT owHasProgramPulse(int portnum);
-SMALLINT owHasOverDrive(int portnum);
-SMALLINT owReadBitPower(int portnum, SMALLINT applyPowerResponse);
-// external One Wire global from owllu.c
-extern SMALLINT FAMILY_CODE_04_ALARM_TOUCHRESET_COMPLIANCE;
-
-// external One Wire functions from transaction layer in owtrnu.c
-SMALLINT owBlock(int portnum, SMALLINT do_reset, uchar *tran_buf, SMALLINT tran_len);
-SMALLINT owReadPacketStd(int portnum, SMALLINT do_access, int start_page, uchar *read_buf);
-SMALLINT owWritePacketStd(int portnum, int start_page, uchar *write_buf,
- SMALLINT write_len, SMALLINT is_eprom, SMALLINT crc_type);
-SMALLINT owProgramByte(int portnum, SMALLINT write_byte, int addr, SMALLINT write_cmd,
- SMALLINT crc_type, SMALLINT do_access);
-
-// link functions
-void msDelay(int len);
-long msGettick(void);
-
-// ioutil.c functions prototypes
-int EnterString(char *msg, char *buf, int min, int max);
-int EnterNum(char *msg, int numchars, long *value, long min, long max);
-int EnterHex(char *msg, int numchars, ulong *value);
-int ToHex(char ch);
-int getkeystroke(void);
-int key_abort(void);
-void ExitProg(char *msg, int exit_code);
-int getData(uchar *write_buff, int max_len, SMALLINT gethex);
-void PrintHex(uchar* buffer, int cnt);
-void PrintChars(uchar* buffer, int cnt);
-void PrintSerialNum(uchar* buffer);
-
-// external functions defined in crcutil.c
-void setcrc16(int portnum, ushort reset);
-ushort docrc16(int portnum, ushort cdata);
-void setcrc8(int portnum, uchar reset);
-uchar docrc8(int portnum, uchar x);
-
-#endif //OWNET_H
+//---------------------------------------------------------------------------\r
+// Copyright (C) 2000 Dallas Semiconductor Corporation, All Rights Reserved.\r
+//\r
+// Permission is hereby granted, free of charge, to any person obtaining a\r
+// copy of this software and associated documentation files (the "Software"),\r
+// to deal in the Software without restriction, including without limitation\r
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,\r
+// and/or sell copies of the Software, and to permit persons to whom the\r
+// Software is furnished to do so, subject to the following conditions:\r
+//\r
+// The above copyright notice and this permission notice shall be included\r
+// in all copies or substantial portions of the Software.\r
+//\r
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS\r
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r
+// IN NO EVENT SHALL DALLAS SEMICONDUCTOR BE LIABLE FOR ANY CLAIM, DAMAGES\r
+// OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,\r
+// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\r
+// OTHER DEALINGS IN THE SOFTWARE.\r
+//\r
+// Except as contained in this notice, the name of Dallas Semiconductor\r
+// shall not be used except as stated in the Dallas Semiconductor\r
+// Branding Policy.\r
+//---------------------------------------------------------------------------\r
+//\r
+// ownet.h - Include file for 1-Wire Net library\r
+//\r
+// Version: 2.10\r
+//\r
+// History: 1.02 -> 1.03 Make sure uchar is not defined twice.\r
+// 1.03 -> 2.00 Changed 'MLan' to 'ow'.\r
+// 2.00 -> 2.01 Added error handling. Added circular-include check.\r
+// 2.01 -> 2.10 Added raw memory error handling and SMALLINT\r
+// 2.10 -> 3.00 Added memory bank functionality\r
+// Added file I/O operations\r
+//\r
+\r
+#ifndef OWNET_H\r
+#define OWNET_H\r
+\r
+//--------------------------------------------------------------//\r
+// Common Includes to ownet applications\r
+//--------------------------------------------------------------//\r
+#include <stdlib.h>\r
+\r
+\r
+//--------------------------------------------------------------//\r
+// Target Specific Information\r
+//--------------------------------------------------------------//\r
+//--------------------------------------------------------------//\r
+// Handhelds (PalmOS, WinCE)\r
+//--------------------------------------------------------------//\r
+#ifdef __MC68K__\r
+ //MC68K is the type of processor in the PILOT\r
+ //Metrowerk's CodeWarrior defines this symbol\r
+ #include <string.h>\r
+ #ifndef strcmp\r
+ #include <StringMgr.h>\r
+ #define strcmp StrCompare\r
+ #endif\r
+ #include <file_struc.h>\r
+#endif\r
+\r
+#ifdef _WIN32_WCE\r
+ //All of our projects had this flag defined by default (_WIN32_WCE),\r
+ //but I'm not 100% positive that this is _the_ definitive\r
+ //flag to use to identify a WinCE system.\r
+ #include "WinCElnk.h"\r
+ #ifndef FILE\r
+ #define FILE int\r
+ extern int sprintf(char *buffer, char *format,...);\r
+ extern void fprintf(FILE *fp, char *format,...);\r
+ extern void printf(char *format,...);\r
+ #endif\r
+#endif\r
+\r
+#if !defined(_WIN32_WCE) && !defined(__MC68K__)\r
+ #include <stdio.h>\r
+#endif\r
+\r
+#ifdef __C51__\r
+ #define FILE int\r
+ #define exit(c) return\r
+ typedef unsigned int ushort;\r
+ typedef unsigned long ulong;\r
+ #define SMALLINT uchar\r
+#endif\r
+\r
+#ifdef __ICCMAXQ__\r
+ #define FILE int\r
+ #define stdout 0\r
+ #define stdin 1\r
+ #define stderr 2\r
+ typedef unsigned int ushort;\r
+ typedef unsigned long ulong;\r
+ #define SMALLINT short\r
+ #define main micro_main\r
+ #define real_main main\r
+ #define SMALL_MEMORY_TARGET\r
+#endif\r
+\r
+\r
+//--------------------------------------------------------------//\r
+// Typedefs\r
+//--------------------------------------------------------------//\r
+#ifndef SMALLINT\r
+ //\r
+ // purpose of smallint is for compile-time changing of formal\r
+ // parameters and return values of functions. For each target\r
+ // machine, an integer is alleged to represent the most "simple"\r
+ // number representable by that architecture. This should, in\r
+ // most cases, produce optimal code for that particular arch.\r
+ // BUT... The majority of compilers designed for embedded\r
+ // processors actually keep an int at 16 bits, although the\r
+ // architecture might only be comfortable with 8 bits.\r
+ // The default size of smallint will be the same as that of\r
+ // an integer, but this allows for easy overriding of that size.\r
+ //\r
+ // NOTE:\r
+ // In all cases where a smallint is used, it is assumed that\r
+ // decreasing the size of this integer to something as low as\r
+ // a single byte _will_not_ change the functionality of the\r
+ // application. e.g. a loop counter that will iterate through\r
+ // several kilobytes of data should not be SMALLINT. The most\r
+ // common place you'll see smallint is for boolean return types.\r
+ //\r
+ #define SMALLINT int\r
+#endif\r
+\r
+// setting max baud\r
+#ifdef _WINDOWS\r
+ // 0x02 = PARAMSET_19200\r
+#define MAX_BAUD 0x02\r
+#else\r
+ // 0x06 = PARMSET_115200\r
+#define MAX_BAUD 0x06\r
+#endif\r
+\r
+#ifndef OW_UCHAR\r
+ #define OW_UCHAR\r
+ typedef unsigned char uchar;\r
+ #if !defined(__MINGW32__) && (defined(__CYGWIN__) || defined(__GNUC__))\r
+ typedef unsigned long ulong;\r
+ //ushort already defined in sys/types.h\r
+ #include <sys/types.h>\r
+ #else\r
+ #if defined(_WIN32) || defined(WIN32) || defined(__MC68K__) || defined(_WIN32_WCE) || defined(_DOS) || defined(_WINDOWS) || defined(__MINGW32__)\r
+ typedef unsigned short ushort;\r
+ typedef unsigned long ulong;\r
+ #endif\r
+ #endif\r
+ #ifdef __sun__\r
+ #include <sys/types.h>\r
+ #endif\r
+ #ifdef SDCC\r
+ //intent of ushort is 2 bytes unsigned.\r
+ //for ds390 in sdcc, an int, not a short,\r
+ //is 2 bytes.\r
+ typedef unsigned int ushort;\r
+ #endif\r
+#endif\r
+\r
+// general defines\r
+#define WRITE_FUNCTION 1\r
+#define READ_FUNCTION 0\r
+\r
+// error codes\r
+// todo: investigate these and replace with new Error Handling library\r
+#define READ_ERROR -1\r
+#define INVALID_DIR -2\r
+#define NO_FILE -3\r
+#define WRITE_ERROR -4\r
+#define WRONG_TYPE -5\r
+#define FILE_TOO_BIG -6\r
+\r
+// Misc\r
+#define FALSE 0\r
+#define TRUE 1\r
+\r
+#ifndef MAX_PORTNUM\r
+ #define MAX_PORTNUM 16\r
+#endif\r
+\r
+// mode bit flags\r
+#define MODE_NORMAL 0x00\r
+#define MODE_OVERDRIVE 0x01\r
+#define MODE_STRONG5 0x02\r
+#define MODE_PROGRAM 0x04\r
+#define MODE_BREAK 0x08\r
+\r
+// Output flags\r
+#define LV_ALWAYS 2\r
+#define LV_OPTIONAL 1\r
+#define LV_VERBOSE 0\r
+\r
+//--------------------------------------------------------------//\r
+// Error handling\r
+//--------------------------------------------------------------//\r
+extern int owGetErrorNum(void);\r
+extern int owHasErrors(void);\r
+\r
+//Clears the stack.\r
+#define OWERROR_CLEAR() while(owHasErrors()) owGetErrorNum();\r
+\r
+#ifdef DEBUG\r
+ //Raises an exception with extra debug info\r
+ #define OWERROR(err) owRaiseError(err,__LINE__,__FILE__)\r
+ extern void owRaiseError(int,int,char*);\r
+ #define OWASSERT(s,err,ret) if(!(s)){owRaiseError((err),__LINE__,__FILE__);return (ret);}\r
+#else\r
+ //Raises an exception with just the error code\r
+ #define OWERROR(err) owRaiseError(err)\r
+ extern void owRaiseError(int);\r
+ #define OWASSERT(s,err,ret) if(!(s)){owRaiseError((err));return (ret);}\r
+#endif\r
+\r
+#ifdef SMALL_MEMORY_TARGET\r
+ #define OWERROR_DUMP(fileno) /*no-op*/;\r
+#else\r
+ //Prints the stack out to the given file.\r
+ #define OWERROR_DUMP(fileno) while(owHasErrors()) owPrintErrorMsg(fileno);\r
+ extern void owPrintErrorMsg(FILE *);\r
+ extern void owPrintErrorMsgStd();\r
+ extern char *owGetErrorMsg(int);\r
+#endif\r
+\r
+#define OWERROR_NO_ERROR_SET 0\r
+#define OWERROR_NO_DEVICES_ON_NET 1\r
+#define OWERROR_RESET_FAILED 2\r
+#define OWERROR_SEARCH_ERROR 3\r
+#define OWERROR_ACCESS_FAILED 4\r
+#define OWERROR_DS2480_NOT_DETECTED 5\r
+#define OWERROR_DS2480_WRONG_BAUD 6\r
+#define OWERROR_DS2480_BAD_RESPONSE 7\r
+#define OWERROR_OPENCOM_FAILED 8\r
+#define OWERROR_WRITECOM_FAILED 9\r
+#define OWERROR_READCOM_FAILED 10\r
+#define OWERROR_BLOCK_TOO_BIG 11\r
+#define OWERROR_BLOCK_FAILED 12\r
+#define OWERROR_PROGRAM_PULSE_FAILED 13\r
+#define OWERROR_PROGRAM_BYTE_FAILED 14\r
+#define OWERROR_WRITE_BYTE_FAILED 15\r
+#define OWERROR_READ_BYTE_FAILED 16\r
+#define OWERROR_WRITE_VERIFY_FAILED 17\r
+#define OWERROR_READ_VERIFY_FAILED 18\r
+#define OWERROR_WRITE_SCRATCHPAD_FAILED 19\r
+#define OWERROR_COPY_SCRATCHPAD_FAILED 20\r
+#define OWERROR_INCORRECT_CRC_LENGTH 21\r
+#define OWERROR_CRC_FAILED 22\r
+#define OWERROR_GET_SYSTEM_RESOURCE_FAILED 23\r
+#define OWERROR_SYSTEM_RESOURCE_INIT_FAILED 24\r
+#define OWERROR_DATA_TOO_LONG 25\r
+#define OWERROR_READ_OUT_OF_RANGE 26\r
+#define OWERROR_WRITE_OUT_OF_RANGE 27\r
+#define OWERROR_DEVICE_SELECT_FAIL 28\r
+#define OWERROR_READ_SCRATCHPAD_VERIFY 29\r
+#define OWERROR_COPY_SCRATCHPAD_NOT_FOUND 30\r
+#define OWERROR_ERASE_SCRATCHPAD_NOT_FOUND 31\r
+#define OWERROR_ADDRESS_READ_BACK_FAILED 32\r
+#define OWERROR_EXTRA_INFO_NOT_SUPPORTED 33\r
+#define OWERROR_PG_PACKET_WITHOUT_EXTRA 34\r
+#define OWERROR_PACKET_LENGTH_EXCEEDS_PAGE 35\r
+#define OWERROR_INVALID_PACKET_LENGTH 36\r
+#define OWERROR_NO_PROGRAM_PULSE 37\r
+#define OWERROR_READ_ONLY 38\r
+#define OWERROR_NOT_GENERAL_PURPOSE 39\r
+#define OWERROR_READ_BACK_INCORRECT 40\r
+#define OWERROR_INVALID_PAGE_NUMBER 41\r
+#define OWERROR_CRC_NOT_SUPPORTED 42\r
+#define OWERROR_CRC_EXTRA_INFO_NOT_SUPPORTED 43\r
+#define OWERROR_READ_BACK_NOT_VALID 44\r
+#define OWERROR_COULD_NOT_LOCK_REDIRECT 45\r
+#define OWERROR_READ_STATUS_NOT_COMPLETE 46\r
+#define OWERROR_PAGE_REDIRECTION_NOT_SUPPORTED 47\r
+#define OWERROR_LOCK_REDIRECTION_NOT_SUPPORTED 48\r
+#define OWERROR_READBACK_EPROM_FAILED 49\r
+#define OWERROR_PAGE_LOCKED 50\r
+#define OWERROR_LOCKING_REDIRECTED_PAGE_AGAIN 51\r
+#define OWERROR_REDIRECTED_PAGE 52\r
+#define OWERROR_PAGE_ALREADY_LOCKED 53\r
+#define OWERROR_WRITE_PROTECTED 54\r
+#define OWERROR_NONMATCHING_MAC 55\r
+#define OWERROR_WRITE_PROTECT 56\r
+#define OWERROR_WRITE_PROTECT_SECRET 57\r
+#define OWERROR_COMPUTE_NEXT_SECRET 58\r
+#define OWERROR_LOAD_FIRST_SECRET 59\r
+#define OWERROR_POWER_NOT_AVAILABLE 60\r
+#define OWERROR_XBAD_FILENAME 61\r
+#define OWERROR_XUNABLE_TO_CREATE_DIR 62\r
+#define OWERROR_REPEAT_FILE 63\r
+#define OWERROR_DIRECTORY_NOT_EMPTY 64\r
+#define OWERROR_WRONG_TYPE 65\r
+#define OWERROR_BUFFER_TOO_SMALL 66\r
+#define OWERROR_NOT_WRITE_ONCE 67\r
+#define OWERROR_FILE_NOT_FOUND 68\r
+#define OWERROR_OUT_OF_SPACE 69\r
+#define OWERROR_TOO_LARGE_BITNUM 70\r
+#define OWERROR_NO_PROGRAM_JOB 71\r
+#define OWERROR_FUNC_NOT_SUP 72\r
+#define OWERROR_HANDLE_NOT_USED 73\r
+#define OWERROR_FILE_WRITE_ONLY 74\r
+#define OWERROR_HANDLE_NOT_AVAIL 75\r
+#define OWERROR_INVALID_DIRECTORY 76\r
+#define OWERROR_HANDLE_NOT_EXIST 77\r
+#define OWERROR_NONMATCHING_SNUM 78\r
+#define OWERROR_NON_PROGRAM_PARTS 79\r
+#define OWERROR_PROGRAM_WRITE_PROTECT 80\r
+#define OWERROR_FILE_READ_ERR 81\r
+#define OWERROR_ADDFILE_TERMINATED 82\r
+#define OWERROR_READ_MEMORY_PAGE_FAILED 83\r
+#define OWERROR_MATCH_SCRATCHPAD_FAILED 84\r
+#define OWERROR_ERASE_SCRATCHPAD_FAILED 85\r
+#define OWERROR_READ_SCRATCHPAD_FAILED 86\r
+#define OWERROR_SHA_FUNCTION_FAILED 87\r
+#define OWERROR_NO_COMPLETION_BYTE 88\r
+#define OWERROR_WRITE_DATA_PAGE_FAILED 89\r
+#define OWERROR_COPY_SECRET_FAILED 90\r
+#define OWERROR_BIND_SECRET_FAILED 91\r
+#define OWERROR_INSTALL_SECRET_FAILED 92\r
+#define OWERROR_VERIFY_SIG_FAILED 93\r
+#define OWERROR_SIGN_SERVICE_DATA_FAILED 94\r
+#define OWERROR_VERIFY_AUTH_RESPONSE_FAILED 95\r
+#define OWERROR_ANSWER_CHALLENGE_FAILED 96\r
+#define OWERROR_CREATE_CHALLENGE_FAILED 97\r
+#define OWERROR_BAD_SERVICE_DATA 98\r
+#define OWERROR_SERVICE_DATA_NOT_UPDATED 99\r
+#define OWERROR_CATASTROPHIC_SERVICE_FAILURE 100\r
+#define OWERROR_LOAD_FIRST_SECRET_FAILED 101\r
+#define OWERROR_MATCH_SERVICE_SIGNATURE_FAILED 102\r
+#define OWERROR_KEY_OUT_OF_RANGE 103\r
+#define OWERROR_BLOCK_ID_OUT_OF_RANGE 104\r
+#define OWERROR_PASSWORDS_ENABLED 105\r
+#define OWERROR_PASSWORD_INVALID 106\r
+#define OWERROR_NO_READ_ONLY_PASSWORD 107\r
+#define OWERROR_NO_READ_WRITE_PASSWORD 108\r
+#define OWERROR_OW_SHORTED 109\r
+#define OWERROR_ADAPTER_ERROR 110\r
+#define OWERROR_EOP_COPY_SCRATCHPAD_FAILED 111\r
+#define OWERROR_EOP_WRITE_SCRATCHPAD_FAILED 112\r
+#define OWERROR_HYGRO_STOP_MISSION_UNNECESSARY 113\r
+#define OWERROR_HYGRO_STOP_MISSION_ERROR 114\r
+#define OWERROR_PORTNUM_ERROR 115\r
+#define OWERROR_LEVEL_FAILED 116\r
+#define OWERROR_PASSWORD_NOT_SET 117\r
+#define OWERROR_LATCH_NOT_SET 118\r
+#define OWERROR_LIBUSB_OPEN_FAILED 119\r
+#define OWERROR_LIBUSB_DEVICE_ALREADY_OPENED 120\r
+#define OWERROR_LIBUSB_SET_CONFIGURATION_ERROR 121\r
+#define OWERROR_LIBUSB_CLAIM_INTERFACE_ERROR 122\r
+#define OWERROR_LIBUSB_SET_ALTINTERFACE_ERROR 123\r
+#define OWERROR_LIBUSB_NO_ADAPTER_FOUND 124\r
+\r
+// One Wire functions defined in ownetu.c\r
+SMALLINT owFirst(int portnum, SMALLINT do_reset, SMALLINT alarm_only);\r
+SMALLINT owNext(int portnum, SMALLINT do_reset, SMALLINT alarm_only);\r
+void owSerialNum(int portnum, uchar *serialnum_buf, SMALLINT do_read);\r
+void owFamilySearchSetup(int portnum, SMALLINT search_family);\r
+void owSkipFamily(int portnum);\r
+SMALLINT owAccess(int portnum);\r
+SMALLINT owVerify(int portnum, SMALLINT alarm_only);\r
+SMALLINT owOverdriveAccess(int portnum);\r
+\r
+\r
+// external One Wire functions defined in owsesu.c\r
+ SMALLINT owAcquire(int portnum, char *port_zstr);\r
+ int owAcquireEx(char *port_zstr);\r
+ void owRelease(int portnum);\r
+\r
+// external One Wire functions defined in findtype.c\r
+// SMALLINT FindDevices(int,uchar FamilySN[][8],SMALLINT,int);\r
+\r
+// external One Wire functions from link layer owllu.c\r
+SMALLINT owTouchReset(int portnum);\r
+SMALLINT owTouchBit(int portnum, SMALLINT sendbit);\r
+SMALLINT owTouchByte(int portnum, SMALLINT sendbyte);\r
+SMALLINT owWriteByte(int portnum, SMALLINT sendbyte);\r
+SMALLINT owReadByte(int portnum);\r
+SMALLINT owSpeed(int portnum, SMALLINT new_speed);\r
+SMALLINT owLevel(int portnum, SMALLINT new_level);\r
+SMALLINT owProgramPulse(int portnum);\r
+SMALLINT owWriteBytePower(int portnum, SMALLINT sendbyte);\r
+SMALLINT owReadBytePower(int portnum);\r
+SMALLINT owHasPowerDelivery(int portnum);\r
+SMALLINT owHasProgramPulse(int portnum);\r
+SMALLINT owHasOverDrive(int portnum);\r
+SMALLINT owReadBitPower(int portnum, SMALLINT applyPowerResponse);\r
+// external One Wire global from owllu.c\r
+extern SMALLINT FAMILY_CODE_04_ALARM_TOUCHRESET_COMPLIANCE;\r
+\r
+// external One Wire functions from transaction layer in owtrnu.c\r
+SMALLINT owBlock(int portnum, SMALLINT do_reset, uchar *tran_buf, SMALLINT tran_len);\r
+SMALLINT owReadPacketStd(int portnum, SMALLINT do_access, int start_page, uchar *read_buf);\r
+SMALLINT owWritePacketStd(int portnum, int start_page, uchar *write_buf,\r
+ SMALLINT write_len, SMALLINT is_eprom, SMALLINT crc_type);\r
+SMALLINT owProgramByte(int portnum, SMALLINT write_byte, int addr, SMALLINT write_cmd,\r
+ SMALLINT crc_type, SMALLINT do_access);\r
+\r
+// link functions\r
+void msDelay(int len);\r
+long msGettick(void);\r
+\r
+// ioutil.c functions prototypes\r
+int EnterString(char *msg, char *buf, int min, int max);\r
+int EnterNum(char *msg, int numchars, long *value, long min, long max);\r
+int EnterHex(char *msg, int numchars, ulong *value);\r
+int ToHex(char ch);\r
+int getkeystroke(void);\r
+int key_abort(void);\r
+void ExitProg(char *msg, int exit_code);\r
+int getData(uchar *write_buff, int max_len, SMALLINT gethex);\r
+void PrintHex(uchar* buffer, int cnt);\r
+void PrintChars(uchar* buffer, int cnt);\r
+void PrintSerialNum(uchar* buffer);\r
+\r
+// external functions defined in crcutil.c\r
+void setcrc16(int portnum, ushort reset);\r
+ushort docrc16(int portnum, ushort cdata);\r
+void setcrc8(int portnum, uchar reset);\r
+uchar docrc8(int portnum, uchar x);\r
+\r
+#endif //OWNET_H\r