Appendix a, Programming watchdog timer – Lanner LEC-7050 User Manual
Page 23
![background image](https://www.manualsdir.com/files/820397/content/doc023.png)
22
Programming Watchdog Timer
Embedded and Industrial Computing
Appendix A
//
Make
sure
the
argument
is
numeric
void
CheckNumeric
(char
*szBuf)
{
int
nLen
=
strlen
(szBuf)
;
for (int i = 0 ; i < nLen ; i++)
if (!strchr (“01234567890ABCDEFabcdef”, szBuf[i]) )
throw “Wrong argument\n” ;
}
// Common GPIO output function definition
#define GPIO_OUT(a,b,c)
\
int a (int argc, char *argv[])
\
{
\
CHECK_ARGC (4) ;
\
CheckNumeric (argv[2]) ;
\
CheckNumeric (argv[3]) ;
\
\
int nPort = atoi (argv[2]) ; \
int nValue = atoi (argv[3]) ;
\
\
c (nPort, nValue) ;
\
\
printf (b “ #%d = %d\n”, nPort, nValue) ;
\
\
return
0
;
\
}
// Function generate by common function definition
GPIO_OUT
(mDIO_
OUT
, “DIO_OUT”
, Write_DIO)
G
P
I
O
_
O
U
T
(mPIO
, “DIO_OUT”
, PIO)
G
P
I
O
_
O
U
T
(mRunLED
, “RunLED”
, RunLED)
G
P
I
O
_
O
U
T
(mAlarmLED
, “AlarmLED”
, AlarmLED)
GPIO_OUT
(mGPS_
LED
, “GPS_LED”
,
GPS_LED)
G
P
I
O
_
O
U
T
(mWirelessLED , “WirelessLED” ,
WirelessLED)
// Check case open
int mCaseOpen (int argc, char* argv[])
{
CHECK_ARGC (2) ;
BOOL bOpen = CaseOpen () ;
printf (“Case is %s\n”, bOpen ? “Open” : “Close”) ;
return bOpen ;
}
// Clear case open state
int mCaseOpen_Clear (int argc, char* argv[])
{
CHECK_ARGC (2) ;
CaseOpen_Clear () ;
BOOL bOpen = CaseOpen () ;
printf (“CaseOpen state %s”, bOpen ? “not cleared”
: “cleared”) ;
return bOpen ;
}
// Get DIO_IN state
int
mDIO_IN
(int
argc,
char*
argv[])
{
CHECK_ARGC (3) ;
CheckNumeric (argv[2]) ;
int nPort = atoi (argv[2]) ;