Erick / Mbed 2 deprecated ICE-F412

Dependencies:   mbed-rtos mbed

Committer:
jmarkel44
Date:
Tue Jan 24 19:05:33 2017 +0000
Revision:
0:61364762ee0e
Port from IAR to Nucleo-F412 board

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jmarkel44 0:61364762ee0e 1 #ifndef __CNTL_TIME_SHEDULE_UTILS_H__
jmarkel44 0:61364762ee0e 2 #define __CNTL_TIME_SHEDULE_UTILS_H__
jmarkel44 0:61364762ee0e 3 /************************************************************************
jmarkel44 0:61364762ee0e 4 * *
jmarkel44 0:61364762ee0e 5 * Copyright (c) 2012 Nalco Company. All Rights Reserved. *
jmarkel44 0:61364762ee0e 6 * *
jmarkel44 0:61364762ee0e 7 ************************************************************************/
jmarkel44 0:61364762ee0e 8
jmarkel44 0:61364762ee0e 9 #include <mbed.h>
jmarkel44 0:61364762ee0e 10 #include "rtos.h"
jmarkel44 0:61364762ee0e 11
jmarkel44 0:61364762ee0e 12 #ifdef __ICCARM__
jmarkel44 0:61364762ee0e 13 struct tm *localtime_r(const time_t *const timep, struct tm *result);
jmarkel44 0:61364762ee0e 14 #endif
jmarkel44 0:61364762ee0e 15
jmarkel44 0:61364762ee0e 16 typedef char DMSTRING32[32];
jmarkel44 0:61364762ee0e 17 typedef char DMSTRING128[128];
jmarkel44 0:61364762ee0e 18 typedef DMSTRING32 DM_TAG;
jmarkel44 0:61364762ee0e 19
jmarkel44 0:61364762ee0e 20 #define ERROR -1
jmarkel44 0:61364762ee0e 21 #define OK 0
jmarkel44 0:61364762ee0e 22
jmarkel44 0:61364762ee0e 23 typedef enum cntl_check_schedule_returns
jmarkel44 0:61364762ee0e 24 {
jmarkel44 0:61364762ee0e 25 CNTL_SCHED_CHECK_INTERNAL_ERROR = -3, // internal implementation error
jmarkel44 0:61364762ee0e 26 CNTL_SCHED_CHECK_BAD_PARAMS = -2, // problem with the schedule data passed
jmarkel44 0:61364762ee0e 27 CNTL_SCHED_CHECK_SCHED_OK = 0, // no problems or conflicts with the schedule
jmarkel44 0:61364762ee0e 28 CNTL_SCHED_CHECK_OUTPUT_CONFLICT = 1, // conflict on output relay
jmarkel44 0:61364762ee0e 29 CNTL_SCHED_CHECK_PRODUCT_CONFLICT = 2, // product conflict with another relay timer
jmarkel44 0:61364762ee0e 30 CNTL_SCHED_CHECK_BLOWDOWN_CONFLICT = 3 // blowdown conflict with another relay timer
jmarkel44 0:61364762ee0e 31 } CNTL_CHECK_SCHEDULE_RETURNS;
jmarkel44 0:61364762ee0e 32
jmarkel44 0:61364762ee0e 33 #define CNTL_MAX_SCHEDULE_ELEMENTS 64
jmarkel44 0:61364762ee0e 34 #define TSC_ALARM_PRIORITY (90) /* Very high alarm priority so no other alarm can cancel it, i.e. interlock, maintenance mode, etc.*/
jmarkel44 0:61364762ee0e 35 #define TSC_12_HOURS_IN_SECONDS (SECONDS_PER_MINUTE * MINUTES_PER_HOUR * 12 )
jmarkel44 0:61364762ee0e 36 #define TSC_31_DAYS_IN_SECONDS (SECONDS_PER_MINUTE * MINUTES_PER_HOUR * HOURS_PER_DAY * 31)
jmarkel44 0:61364762ee0e 37
jmarkel44 0:61364762ee0e 38
jmarkel44 0:61364762ee0e 39 #define SUNDAY_MASK (0x001)
jmarkel44 0:61364762ee0e 40 #define MONDAY_MASK (0x002)
jmarkel44 0:61364762ee0e 41 #define TUESDAY_MASK (0x004)
jmarkel44 0:61364762ee0e 42 #define WEDNESDAY_MASK (0x008)
jmarkel44 0:61364762ee0e 43 #define THURSDAY_MASK (0x010)
jmarkel44 0:61364762ee0e 44 #define FRIDAY_MASK (0x020)
jmarkel44 0:61364762ee0e 45 #define SATURDAY_MASK (0x040)
jmarkel44 0:61364762ee0e 46 #define EVERY_DAY_MASK (0x080)
jmarkel44 0:61364762ee0e 47 #define EVERY_WEEK_DAY_MASK (0x100)
jmarkel44 0:61364762ee0e 48 #define SUN_TO_SAT_MASK (SUNDAY_MASK | MONDAY_MASK | TUESDAY_MASK | WEDNESDAY_MASK | THURSDAY_MASK | FRIDAY_MASK | SATURDAY_MASK)
jmarkel44 0:61364762ee0e 49
jmarkel44 0:61364762ee0e 50 typedef struct
jmarkel44 0:61364762ee0e 51 {
jmarkel44 0:61364762ee0e 52 int days;
jmarkel44 0:61364762ee0e 53 int hours;
jmarkel44 0:61364762ee0e 54 int minutes;
jmarkel44 0:61364762ee0e 55 int seconds;
jmarkel44 0:61364762ee0e 56 } UTtimeInterval;
jmarkel44 0:61364762ee0e 57
jmarkel44 0:61364762ee0e 58 /*
jmarkel44 0:61364762ee0e 59 * A general date and time struct
jmarkel44 0:61364762ee0e 60 */
jmarkel44 0:61364762ee0e 61 typedef struct
jmarkel44 0:61364762ee0e 62 {
jmarkel44 0:61364762ee0e 63 int hour;
jmarkel44 0:61364762ee0e 64 int minute;
jmarkel44 0:61364762ee0e 65 int day;
jmarkel44 0:61364762ee0e 66 int month;
jmarkel44 0:61364762ee0e 67 int year;
jmarkel44 0:61364762ee0e 68 } UT_DATE_TIME;
jmarkel44 0:61364762ee0e 69
jmarkel44 0:61364762ee0e 70 typedef struct cntl_date_struct
jmarkel44 0:61364762ee0e 71 {
jmarkel44 0:61364762ee0e 72 unsigned long month;
jmarkel44 0:61364762ee0e 73 unsigned long day;
jmarkel44 0:61364762ee0e 74 unsigned long year;
jmarkel44 0:61364762ee0e 75 } CNTL_DATE_STRUCT;
jmarkel44 0:61364762ee0e 76
jmarkel44 0:61364762ee0e 77 typedef struct cntl_hr_min_struct
jmarkel44 0:61364762ee0e 78 {
jmarkel44 0:61364762ee0e 79 unsigned long hour;
jmarkel44 0:61364762ee0e 80 unsigned long minute;
jmarkel44 0:61364762ee0e 81 unsigned long second;
jmarkel44 0:61364762ee0e 82 } CNTL_HR_MIN_STRUCT;
jmarkel44 0:61364762ee0e 83
jmarkel44 0:61364762ee0e 84 #define SECONDS_PER_MINUTE (60)
jmarkel44 0:61364762ee0e 85 #define MINUTES_PER_HOUR (60)
jmarkel44 0:61364762ee0e 86 #define HOURS_PER_DAY (24)
jmarkel44 0:61364762ee0e 87 #define DAYS_PER_WEEK (7)
jmarkel44 0:61364762ee0e 88 #define DAYS_PER_YEAR (365)
jmarkel44 0:61364762ee0e 89 #define HOURS_PER_WEEK (HOURS_PER_DAY * DAYS_PER_WEEK)
jmarkel44 0:61364762ee0e 90 #define MINUTES_PER_DAY (MINUTES_PER_HOUR * HOURS_PER_DAY)
jmarkel44 0:61364762ee0e 91 #define MINUTES_PER_WEEK (MINUTES_PER_HOUR * HOURS_PER_WEEK)
jmarkel44 0:61364762ee0e 92 #define SECONDS_PER_HOUR (SECONDS_PER_MINUTE*MINUTES_PER_HOUR)
jmarkel44 0:61364762ee0e 93 #define SECONDS_PER_DAY (SECONDS_PER_HOUR*HOURS_PER_DAY)
jmarkel44 0:61364762ee0e 94 #define SECONDS_PER_WEEK (SECONDS_PER_HOUR*HOURS_PER_WEEK)
jmarkel44 0:61364762ee0e 95
jmarkel44 0:61364762ee0e 96
jmarkel44 0:61364762ee0e 97 #define CNTL_SUNDAY_MASK (0x01)
jmarkel44 0:61364762ee0e 98 #define CNTL_MONDAY_MASK (0x02)
jmarkel44 0:61364762ee0e 99 #define CNTL_TUESDAY_MASK (0x04)
jmarkel44 0:61364762ee0e 100 #define CNTL_WEDNESDAY_MASK (0x08)
jmarkel44 0:61364762ee0e 101 #define CNTL_THURSDAY_MASK (0x10)
jmarkel44 0:61364762ee0e 102 #define CNTL_FRIDAY_MASK (0x20)
jmarkel44 0:61364762ee0e 103 #define CNTL_SATURDAY_MASK (0x40)
jmarkel44 0:61364762ee0e 104 #define CNTL_SUN_TO_SAT_MASK (CNTL_SUNDAY_MASK | CNTL_MONDAY_MASK | CNTL_TUESDAY_MASK | CNTL_WEDNESDAY_MASK | CNTL_THURSDAY_MASK | CNTL_FRIDAY_MASK | CNTL_SATURDAY_MASK)
jmarkel44 0:61364762ee0e 105 #define CNTL_WEEKDAY_MASK (CNTL_MONDAY_MASK | CNTL_TUESDAY_MASK | CNTL_WEDNESDAY_MASK | CNTL_THURSDAY_MASK | CNTL_FRIDAY_MASK)
jmarkel44 0:61364762ee0e 106
jmarkel44 0:61364762ee0e 107 typedef enum
jmarkel44 0:61364762ee0e 108 {
jmarkel44 0:61364762ee0e 109 DAY_SCHEDULE_NOT_SPECIFIED = 0x00,
jmarkel44 0:61364762ee0e 110 DAY_SCHEDULE_SUNDAY_MASK = 0x01,
jmarkel44 0:61364762ee0e 111 DAY_SCHEDULE_MONDAY_MASK = 0x02,
jmarkel44 0:61364762ee0e 112 DAY_SCHEDULE_TUESDAY_MASK = 0x04,
jmarkel44 0:61364762ee0e 113 DAY_SCHEDULE_WEDNESDAY_MASK = 0x08,
jmarkel44 0:61364762ee0e 114 DAY_SCHEDULE_THURSDAY_MASK = 0x10,
jmarkel44 0:61364762ee0e 115 DAY_SCHEDULE_FRIDAY_MASK = 0x20,
jmarkel44 0:61364762ee0e 116 DAY_SCHEDULE_SATURDAY_MASK = 0x40,
jmarkel44 0:61364762ee0e 117 DAY_SCHEDULE_WEEKDAY_MASK = ( DAY_SCHEDULE_MONDAY_MASK | DAY_SCHEDULE_TUESDAY_MASK | DAY_SCHEDULE_WEDNESDAY_MASK | DAY_SCHEDULE_THURSDAY_MASK | DAY_SCHEDULE_FRIDAY_MASK ),
jmarkel44 0:61364762ee0e 118 DAY_SCHEDULE_SAT_TO_SUN_MASK = ( DAY_SCHEDULE_SUNDAY_MASK | DAY_SCHEDULE_WEEKDAY_MASK | DAY_SCHEDULE_SATURDAY_MASK )
jmarkel44 0:61364762ee0e 119 } DAY_SCHEDULE;
jmarkel44 0:61364762ee0e 120
jmarkel44 0:61364762ee0e 121 typedef enum
jmarkel44 0:61364762ee0e 122 {
jmarkel44 0:61364762ee0e 123 WEEKLY_CHOICE_EVERY_WEEK = 0,
jmarkel44 0:61364762ee0e 124 WEEKLY_CHOICE_FIRST_WEEK = 1,
jmarkel44 0:61364762ee0e 125 WEEKLY_CHOICE_SECOND_WEEK = 2,
jmarkel44 0:61364762ee0e 126 WEEKLY_CHOICE_THIRD_WEEK = 3,
jmarkel44 0:61364762ee0e 127 WEEKLY_CHOICE_FOURTH_WEEK = 4,
jmarkel44 0:61364762ee0e 128 WEEKLY_CHOICE_LAST_WEEK = 5,
jmarkel44 0:61364762ee0e 129 WEEKLY_CHOICE_EVERYOTHER_WEEK = 6,
jmarkel44 0:61364762ee0e 130 WEEKLY_CHOICE_NOT_SPECIFIED = 7
jmarkel44 0:61364762ee0e 131 } WEEKLY_CHOICES;
jmarkel44 0:61364762ee0e 132
jmarkel44 0:61364762ee0e 133
jmarkel44 0:61364762ee0e 134 typedef enum cntl_days_of_wk
jmarkel44 0:61364762ee0e 135 {
jmarkel44 0:61364762ee0e 136 SUNDAY = 0,
jmarkel44 0:61364762ee0e 137 MONDAY = 1,
jmarkel44 0:61364762ee0e 138 TUESDAY = 2,
jmarkel44 0:61364762ee0e 139 WEDNESDAY = 3,
jmarkel44 0:61364762ee0e 140 THURSDAY = 4,
jmarkel44 0:61364762ee0e 141 FRIDAY = 5,
jmarkel44 0:61364762ee0e 142 SATURDAY = 6
jmarkel44 0:61364762ee0e 143 } CNTL_DAYS_OF_WK;
jmarkel44 0:61364762ee0e 144
jmarkel44 0:61364762ee0e 145 /*
jmarkel44 0:61364762ee0e 146 * CNLT_SCHED_STRUCT contains everything needed to specify a schedule
jmarkel44 0:61364762ee0e 147 */
jmarkel44 0:61364762ee0e 148 typedef struct cntl_sched_struct
jmarkel44 0:61364762ee0e 149 {
jmarkel44 0:61364762ee0e 150 CNTL_DATE_STRUCT startDate; // always valid, mm/dd/yyyy when schedule starts all schedules have a startDate
jmarkel44 0:61364762ee0e 151 CNTL_HR_MIN_STRUCT startTime; // always valid, hour and minute when output is activated, all schedules have startTime
jmarkel44 0:61364762ee0e 152 CNTL_HR_MIN_STRUCT endTime; // always valid, hour and minute when output is activation stops, all schedules have stopTime
jmarkel44 0:61364762ee0e 153 WEEKLY_CHOICES weeklySchedule; // default is EVERY
jmarkel44 0:61364762ee0e 154 unsigned char dailySchedule; // default is the current day of the week
jmarkel44 0:61364762ee0e 155 } CNTL_SCHED_STRUCT;
jmarkel44 0:61364762ee0e 156
jmarkel44 0:61364762ee0e 157 typedef struct
jmarkel44 0:61364762ee0e 158 {
jmarkel44 0:61364762ee0e 159 CNTL_SCHED_STRUCT schedule; /* the schedule */
jmarkel44 0:61364762ee0e 160 time_t calTime; /* time in seconds passed to localtime to populate the requestTime structure */
jmarkel44 0:61364762ee0e 161 struct tm requestTime; /* the broken down time when the request was made, used to determine the initial starting date */
jmarkel44 0:61364762ee0e 162 unsigned long outputDuty; /* scaled output duty 3 digits 1 decimal 0 <= outputDuty <= 1000 */
jmarkel44 0:61364762ee0e 163 bool preBleedorLockout; /* the timer specifies preBleed or lockout */
jmarkel44 0:61364762ee0e 164 } TSC_SCHED_ELEM;
jmarkel44 0:61364762ee0e 165
jmarkel44 0:61364762ee0e 166 #define TSC_NULL_INSTANCE (-1)
jmarkel44 0:61364762ee0e 167
jmarkel44 0:61364762ee0e 168 /*
jmarkel44 0:61364762ee0e 169 * To be deprecated
jmarkel44 0:61364762ee0e 170 */
jmarkel44 0:61364762ee0e 171 typedef enum
jmarkel44 0:61364762ee0e 172 {
jmarkel44 0:61364762ee0e 173 TSC_UTIL_ONE_OUTPUT = 1,
jmarkel44 0:61364762ee0e 174 TSC_UTIL_ALL_OUTPUTS = 2,
jmarkel44 0:61364762ee0e 175 } TSC_UTIL_OUTPUT_CHECK;
jmarkel44 0:61364762ee0e 176
jmarkel44 0:61364762ee0e 177 /*
jmarkel44 0:61364762ee0e 178 * Tell the general checking function what to look for
jmarkel44 0:61364762ee0e 179 */
jmarkel44 0:61364762ee0e 180 typedef enum
jmarkel44 0:61364762ee0e 181 {
jmarkel44 0:61364762ee0e 182 TSC_UTIL_THEOUTPUT_CHECK,
jmarkel44 0:61364762ee0e 183 TSC_UTIL_BLOWDOWN_CHECK,
jmarkel44 0:61364762ee0e 184 TSC_UTIL_OXNONOX_CHECK
jmarkel44 0:61364762ee0e 185 } TSC_UTIL_WHAT_TO_CHECK;
jmarkel44 0:61364762ee0e 186
jmarkel44 0:61364762ee0e 187 /*
jmarkel44 0:61364762ee0e 188 * The attribute to look for when filtering the list of timer schedules
jmarkel44 0:61364762ee0e 189 * it's up to the pruning filter functions to include or exclude based upon the
jmarkel44 0:61364762ee0e 190 * pruning attribute
jmarkel44 0:61364762ee0e 191 */
jmarkel44 0:61364762ee0e 192 typedef enum
jmarkel44 0:61364762ee0e 193 {
jmarkel44 0:61364762ee0e 194 TSC_UTIL_PRUNE_PRODUCTS = 1,
jmarkel44 0:61364762ee0e 195 TSC_UTIL_PRUNE_BLOWDOWN = 2
jmarkel44 0:61364762ee0e 196 } TSC_UTIL_PRUNE_ATTRIBUTE;
jmarkel44 0:61364762ee0e 197
jmarkel44 0:61364762ee0e 198 /*
jmarkel44 0:61364762ee0e 199 * attribute indicates if a timer scheduling is for the first time or a reschedule
jmarkel44 0:61364762ee0e 200 */
jmarkel44 0:61364762ee0e 201 typedef enum
jmarkel44 0:61364762ee0e 202 {
jmarkel44 0:61364762ee0e 203 TSC_INITIAL_SCHEDULE,
jmarkel44 0:61364762ee0e 204 TSC_RESCHEDULE
jmarkel44 0:61364762ee0e 205 } TSC_UTIL_SCHED_STATE;
jmarkel44 0:61364762ee0e 206
jmarkel44 0:61364762ee0e 207 typedef enum tsc_sched_miss_reason
jmarkel44 0:61364762ee0e 208 {
jmarkel44 0:61364762ee0e 209 TSC_SCHEDULE_NOT_MISSED,
jmarkel44 0:61364762ee0e 210 TSC_SCHEDULE_MISSED,
jmarkel44 0:61364762ee0e 211 TSC_SCHEDULE_INTERRUPTED
jmarkel44 0:61364762ee0e 212 } TSC_SCHED_MISS_REASON;
jmarkel44 0:61364762ee0e 213
jmarkel44 0:61364762ee0e 214
jmarkel44 0:61364762ee0e 215 /*
jmarkel44 0:61364762ee0e 216 * renamed utility functions replacing CNTL_xyz functions
jmarkel44 0:61364762ee0e 217 */
jmarkel44 0:61364762ee0e 218
jmarkel44 0:61364762ee0e 219 void TSCutilScheduleWithInWeek( TSC_SCHED_ELEM *pSchedElem );
jmarkel44 0:61364762ee0e 220 void TSCutilPreviousScheduleWithInWeek( TSC_SCHED_ELEM *pSchedElem );
jmarkel44 0:61364762ee0e 221 void TSCutilComputeStartDate( TSC_SCHED_ELEM *pSchedElem );
jmarkel44 0:61364762ee0e 222 void TSCutilScheduleOneWeekPerMonth( TSC_SCHED_ELEM *pSchedElem );
jmarkel44 0:61364762ee0e 223 void TSCutilInitFreeLists();
jmarkel44 0:61364762ee0e 224 bool TSCutilWasPreviousScheduleInterrupted( CNTL_SCHED_STRUCT *pElem, TSC_SCHED_MISS_REASON *pReason, unsigned long create_time_stamp, int *pmiss_count, int *pstart_to_end_diff );
jmarkel44 0:61364762ee0e 225 int TSCgetCreateTime( DM_TAG relay, unsigned long starting_hour, unsigned long starting_minute, unsigned long *create_time );
jmarkel44 0:61364762ee0e 226 int TSCnewComputeWaitTimer( CNTL_SCHED_STRUCT *pSchedule, TSC_UTIL_SCHED_STATE scheduleingState, TSC_SCHED_ELEM *pNowTimeDate, unsigned long *pDiffInSeconds );
jmarkel44 0:61364762ee0e 227 bool TSCIsTimerSchedLT12Hr( unsigned long *pGo_Off, DMSTRING32 id_info );
jmarkel44 0:61364762ee0e 228
jmarkel44 0:61364762ee0e 229 int TSCutilLoadSchedules();
jmarkel44 0:61364762ee0e 230 int TSCutilAddElemToScheduleList( TSC_SCHED_ELEM *pElem );
jmarkel44 0:61364762ee0e 231 int TSCutilPutFreeSchedElem( TSC_SCHED_ELEM *pElem );
jmarkel44 0:61364762ee0e 232
jmarkel44 0:61364762ee0e 233
jmarkel44 0:61364762ee0e 234 int TSCutilDeleteSchedElem( TSC_SCHED_ELEM *pElem );
jmarkel44 0:61364762ee0e 235
jmarkel44 0:61364762ee0e 236 TSC_SCHED_ELEM *TSCutilGetFreeSchedElem( );
jmarkel44 0:61364762ee0e 237 TSC_SCHED_ELEM *TSCutilGetFirstSchedule();
jmarkel44 0:61364762ee0e 238 TSC_SCHED_ELEM *TSCutilGetNextSchedule( TSC_SCHED_ELEM *pElem );
jmarkel44 0:61364762ee0e 239
jmarkel44 0:61364762ee0e 240 int TSCutilgetScheduleCount();
jmarkel44 0:61364762ee0e 241 int TSCutilCmpStartTimes( TSC_SCHED_ELEM *pNewElem, TSC_SCHED_ELEM *pListElem );
jmarkel44 0:61364762ee0e 242
jmarkel44 0:61364762ee0e 243 bool TSCutilDoesScheduleConflict( TSC_SCHED_ELEM *pNewElem, TSC_UTIL_OUTPUT_CHECK which_check );
jmarkel44 0:61364762ee0e 244
jmarkel44 0:61364762ee0e 245
jmarkel44 0:61364762ee0e 246
jmarkel44 0:61364762ee0e 247 int Util_addTupleToTimeControl( int instance, TSC_SCHED_ELEM *pElem );
jmarkel44 0:61364762ee0e 248 int Util_addTupleToRLcontrol( int instance, TSC_SCHED_ELEM *pElem, DM_TAG keyTag );
jmarkel44 0:61364762ee0e 249 int Util_dateTimeDiff( CNTL_SCHED_STRUCT *pDateTime1, CNTL_SCHED_STRUCT *pDateTime2, unsigned long *pDiffInSeconds );
jmarkel44 0:61364762ee0e 250
jmarkel44 0:61364762ee0e 251
jmarkel44 0:61364762ee0e 252 void Util_displayStartDateTime( CNTL_SCHED_STRUCT *pTimeStruct );
jmarkel44 0:61364762ee0e 253 void Util_displayWeeklySchedule( CNTL_SCHED_STRUCT *pTimeStruct );
jmarkel44 0:61364762ee0e 254 void Util_displayDailySchedule( CNTL_SCHED_STRUCT *pTimeStruct );
jmarkel44 0:61364762ee0e 255
jmarkel44 0:61364762ee0e 256 int Util_getDayOfWeek( TSC_SCHED_ELEM *pSchedElem, CNTL_DATE_STRUCT *pDate );
jmarkel44 0:61364762ee0e 257 int Util_getMonthWeek( TSC_SCHED_ELEM *pSchedElem, CNTL_DATE_STRUCT *pDate );
jmarkel44 0:61364762ee0e 258 int Util_findAday( int startingDay, unsigned char dailySchedule );
jmarkel44 0:61364762ee0e 259 int Util_getDoWThisMonth( TSC_SCHED_ELEM *pSchedElem, int dom );
jmarkel44 0:61364762ee0e 260 int Util_numDaysInSchedule( unsigned char dailySchedule );
jmarkel44 0:61364762ee0e 261
jmarkel44 0:61364762ee0e 262 char *Util_getDailyScheduleString( CNTL_SCHED_STRUCT *pTimeStruct );
jmarkel44 0:61364762ee0e 263 char *Util_getWeeklyScheduleString( CNTL_SCHED_STRUCT *pTimeStruct);
jmarkel44 0:61364762ee0e 264 char *Util_getDayString( int dayOfWeek );
jmarkel44 0:61364762ee0e 265
jmarkel44 0:61364762ee0e 266 int TSCgetNumericSuffix(char* input);
jmarkel44 0:61364762ee0e 267 char * TSCinterruptReasonToString( TSC_SCHED_MISS_REASON reason );
jmarkel44 0:61364762ee0e 268
jmarkel44 0:61364762ee0e 269 #endif