1 //---------------------------------------------------------------------------
2 // Copyright (C) 2000 Dallas Semiconductor Corporation, All Rights Reserved.
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:
11 // The above copyright notice and this permission notice shall be included
12 // in all copies or substantial portions of the Software.
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 DALLAS SEMICONDUCTOR 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.
22 // Except as contained in this notice, the name of Dallas Semiconductor
23 // shall not be used except as stated in the Dallas Semiconductor
25 //---------------------------------------------------------------------------
27 // thermo.h - Include file for Thermochron demo.
32 // 1.03 -> 2.00 Reorganization of Public Domain Kit
38 // hacks for sdcc->TINI
39 #define NULL ((void*)0)
41 #define stdin ((void *)0)
42 #define stdout ((void *)0)
43 #define stderr ((void *)0)
44 int fprintf (FILE *fp, char *format, ...) reentrant;
45 FILE *fopen (char *, char *);
49 #define STATUS_PAGE 16
50 #define THERMO_FAM 0x21
57 typedef unsigned char uchar;
59 typedef unsigned short ushort;
60 typedef unsigned long ulong;
64 // structure to hold the mission status
67 uchar serial_num[8]; // serial number of thermochron
69 uchar mission_in_progress; // 1 mission in progres, 0 mission over
71 uchar sample_rate; // minutes between samples
73 uchar rollover_enable; // 1 if roll-over enabled
74 uchar rollover_occurred; // 1 if roll-over occurred
76 ushort start_delay; // minutes before mission starts
78 ulong mission_start_time; // date/time when mission started
79 ulong current_time; // current real-time clock value
80 ulong download_time; // download stations time of reading
82 ulong mission_samples; // number of samples in this mission
83 ulong samples_total; // total number of samples taken by device
85 uchar high_threshold; // raw temp of high threshold
86 uchar low_threshold; // raw temp of low threshold
88 // skip alarm modes and status for now
94 // structure to hold the histogram data
97 ushort bin_count[56]; // counter per bin 0 to 55
98 float start_range[56]; // start temp range (C) in bin 0 to 55
99 float end_range[56]; // end temp range (C) in bin 0 to 55
101 uchar hist_raw[128]; // raw data for histogram
105 // structure to hold the histogram data
108 int num_low; // number of low events
109 ulong low_start_time[12]; // start time of event 0 to 12
110 ulong low_end_time[12]; // end time of event 0 to 12
111 int num_high; // number of high events
112 ulong high_start_time[12]; // start time of event 0 to 12
113 ulong high_end_time[12]; // end time of event 0 to 12
115 uchar alarm_raw[96]; // raw data for alarm events
119 // structure to hold the log data
122 int num_log; // number of logs
123 float temp[2048]; // temperature log in (C)
124 ulong start_time; // start time of log
125 int interval; // interval in seconds between logs
127 uchar log_raw[2048]; // raw data for log
131 // structure to hold all of the thermochron data state
134 MissionStatus MissStat; // mission state
135 Histogram HistData; // histogram data
136 TempAlarmEvents AlarmData; // temperature alarm event data
137 Log LogData; // log data
141 // type structure to holde time/date
152 // structure to hold each state in the StateMachine
156 char StepDescription[50];
160 // Global Function Prototypes
161 int DownloadThermo(int,uchar *,ThermoStateType *, FILE *);
162 int ReadThermoStatus(int,uchar *,ThermoStateType *, FILE *);
163 int MissionThermo(int,uchar *,ThermoStateType *, FILE *);
164 void SecondsToDate(timedate *, ulong);
165 ulong DateToSeconds(timedate *);
166 uchar BCDToBin(uchar);
167 void InterpretStatus(MissionStatus *);
168 void MissionStatusToString(MissionStatus *, int, char *);
169 void FormatMission(MissionStatus *);
170 void InterpretHistogram(Histogram *);
171 void HistogramToString(Histogram *, int, char *);
172 void InterpretAlarms(TempAlarmEvents *, MissionStatus *);
173 void AlarmsToString(TempAlarmEvents *, char *);
174 void InterpretLog(Log *, MissionStatus *);
175 void LogToString(Log *, int, char *);
176 void DebugToString(MissionStatus *, TempAlarmEvents *, Histogram *, Log *, char *);
177 float TempToFloat(uchar, int);