151 lines
7.7 KiB
C
151 lines
7.7 KiB
C
/*
|
|
************************************************************************
|
|
**
|
|
** Copyright (c) 2008..2013 by
|
|
** Core|Vision B.V.
|
|
** Cereslaan 10b
|
|
** 5384 VT Heesch
|
|
** The Netherlands
|
|
**
|
|
** All Rights Reserved
|
|
**
|
|
************************************************************************
|
|
*/
|
|
/*
|
|
************************************************************************
|
|
**
|
|
** Project name: Dual Inventive: Zelfsignalerende Kortsluit Lans
|
|
** Filename: database-if.h
|
|
** Author: Jack Weeland
|
|
** Date: September 2, 2008
|
|
** File version: $Revision: 1.8 $
|
|
** $Date: 2014/10/23 14:35:51 $
|
|
**
|
|
************************************************************************
|
|
*/
|
|
/*
|
|
************************************************************************
|
|
**
|
|
** TCP server; interface to the database
|
|
** Definitions
|
|
**
|
|
************************************************************************
|
|
*/
|
|
|
|
#ifndef _DATABASE_IF_H
|
|
#define _DATABASE_IF_H
|
|
|
|
/*
|
|
** Constants
|
|
*/
|
|
|
|
// buffer size for database queries
|
|
#define DB_QUERY_BUFSIZE 4096
|
|
// buffer size for string results from a query
|
|
#define DB_STR_BUFSIZE 1024
|
|
|
|
// Version numbers and device info
|
|
#define N_VERSION 56 // (first entries are present in the database)
|
|
#define N_VERSION_ALL 64 // (number including special items)
|
|
#define VERSIONIDX_IMEI 0 // Equipment identifier
|
|
#define VERSIONIDX_IMSI 1 // Subscriber identifier
|
|
#define VERSIONIDX_CCID 2 // SIM card number
|
|
#define VERSIONIDX_PHONENR 3 // Device's telephone number
|
|
#define VERSIONIDX_MECH_VERSION 4 // Mechanics
|
|
#define VERSIONIDX_IDCODE 6 // Customer's identification for the device
|
|
#define VERSIONIDX_SERIAL 7 // Serial number
|
|
#define VERSIONIDX_PCB_VERSION 9 // PCB version
|
|
#define VERSIONIDX_PCB_REVISION 10 // PCB hardware revision
|
|
#define VERSIONIDX_PCB_SERIAL 11 // PCB serial number (production number)
|
|
#define VERSIONIDX_MCU_FIRMWARE 12 // MCU firmware version
|
|
#define VERSIONIDX_MCU_HARDWARE 13 // MCU hardware version and revision
|
|
#define VERSIONIDX_WCPU_FIRMWARE 16 // WCPU firmware version
|
|
#define VERSIONIDX_MODEM_FIRMWARE 20 // Modem firmware version
|
|
#define VERSIONIDX_MODEM_HARDWARE 21 // Modem hardware version and revision
|
|
#define VERSIONIDX_MODEM_SERIAL 23 // Modem serial number
|
|
#define VERSIONIDX_IO_FIRMWARE 24 // I/O chip (uALFAT) firmware version
|
|
#define VERSIONIDX_IO_HARDWARE 25 // I/O chip (uALFAT) brand, model, revision
|
|
#define VERSIONIDX_GPS_FIRMWARE 28 // GPS receiver's firmware revision
|
|
#define VERSIONIDX_GPS_HARDWARE 29 // GPS receiver brand, model and hardware version
|
|
#define VERSIONIDX_GPS_SERIAL 31 // GPS receiver's serial number
|
|
#define VERSIONIDX_SW3000_HARDWARE 33 // Switch 3000, hardware version
|
|
#define VERSIONIDX_SW3000D_FIRMWARE 36 // Switch 3000, "drive" firmware version
|
|
#define VERSIONIDX_SW3000M_FIRMWARE 40 // Switch 3000, "measure" firmware version
|
|
#define VERSIONIDX_GPRS_APN 44 // GPRS APN, username and password
|
|
#define VERSIONIDX_TCPSERVER 45 // IP-address or hostname for the TCP server
|
|
#define VERSIONIDX_SMSSERVER 46 // IP-address or hostname for the SMS server
|
|
#define VERSIONIDX_TELSERVER 47 // Phone number of the SMS server
|
|
#define VERSIONIDX_IPADDRESS 48 // Fixed IP address
|
|
#define VERSIONIDX_GATEWAY 49 // Fixed gateway address
|
|
// specials (not in the database or via another table)
|
|
#define VERSIONIDX_DEVICE_TYPE 56 // 16-bit device or firmware type (4-digit hexadecimal)
|
|
#define VERSIONIDX_GPS_FIXED 57 // fixed GPS position
|
|
// special purpose flags
|
|
#define VERSIONIDX_ALL (-1)
|
|
#define VERSION_BITFIELD(index) ((uint64_t)1 << (index))
|
|
extern const char *VERSION_FIELDS[N_VERSION];
|
|
|
|
// SYNCDB fields
|
|
#define N_SYNCDB 20
|
|
#define SYNCDB_ID 0x00000001 // synchronize device identification and version numbers
|
|
#define SYNCDB_CONFIG 0x00000002 // synchronize device configuration
|
|
#define SYNCDB_SERVERS 0x00000004 // synchronize server addresses
|
|
#define SYNCDB_PHONENR 0x00000008 // retrieve device's telephone number (via SMS server)
|
|
#define SYNCDB_SECURE 0x00000010 // generate and exchange a new secure key
|
|
#define SYNCDB_GATEWAY 0x00000020 // update gateway and child devices
|
|
#define SYNCDB_I18N 0x00000100 // program SMS translation table
|
|
#define SYNCDB_TZ 0x00000200 // set device's time zone
|
|
#define SYNCDB_SMS 0x00000400 // not used; SMS translation table is programmed when SYNCDB_I18N is set
|
|
#define SYNCDB_PHONEBOOK 0x00001000 // synchronize the device's phone book for autonomous warnings via SMS
|
|
#define SYNCDB_TIMERS 0x00002000 // timers for periodic events
|
|
#define SYNCDB_HEARTBEAT 0x00004000 // request heartbeats from the device (synchronized to about too much data traffic)
|
|
#define SYNCDB_GEOFENCE 0x00010000 // program a (new) geofence
|
|
#define SYNCDB_THRESHOLDS 0x00020000 // program (new) temperature, and perhaps other thresholds
|
|
#define SYNCDB_RELEASE 0x00080000 // release or inhibit the device (RC functionality)
|
|
#define SYNCDB_ANY 0xFFFFFFFF
|
|
extern const char *SYNCDB_FIELDS[N_SYNCDB];
|
|
|
|
// CAPABILITY fields
|
|
#define N_CAPABILITY 32
|
|
#define CAPABILITY_MEASUREMENT 0x00000001 // device is equiped for measuring the short between the rails
|
|
#define CAPABILITY_SWITCH 0x00000002 // short between the rails can be switched
|
|
#define CAPABILITY_KEY_ONOFF 0x00000004 // device has a key switch and not just a button
|
|
#define CAPABILITY_GPS 0x00000010 // device has a GPS receiver
|
|
#define CAPABILITY_GPS_FIXED 0x00000020 // device has a fixed GPS position
|
|
#define CAPABILITY_GEOFENCE 0x00000040 // device supports geofences
|
|
#define CAPABILITY_LED 0x00000100 // device has LEDs with an adjustable intensity
|
|
#define CAPABILITY_LANTERN 0x00000200 // device has a lantern
|
|
#define CAPABILITY_EXTCONTACT 0x00000400 // device has an external contact to control external hardware
|
|
#define CAPABILITY_RELAY 0x00000800 // device has a relay to control external hardware
|
|
#define CAPABILITY_GSM 0x00001000 // device has GSM
|
|
#define CAPABILITY_GPRS 0x00002000 // device can set up an network connection over GPRS/UMTS/3G/4G/ethernet/wifi/Zigbee/XBee/etc
|
|
#define CAPABILITY_SMS 0x00004000 // device has direct SMS capabilities, via its modem
|
|
// NB: this flag is not part of the database
|
|
// NB: wehn not set yet the device can send an SMS, it is sent via an SMS-MO
|
|
#define CAPABILITY_GATEWAY 0x00008000 // device is the gateway to its children
|
|
#define CAPABILITY_T_ONBOARD 0x00010000 // device has an on-board temperature sensor
|
|
#define CAPABILITY_T_EXTERN 0x00020000 // device has one or more external temperature sensors, such as an NTC
|
|
#define CAPABILITY_VIBR 0x00100000 // device has a vibration sensor
|
|
#define CAPABILITY_TILT 0x00200000 // device has a tilt sensor
|
|
#define CAPABILITY_LOCK 0x01000000 // device can be locked
|
|
extern const char *CAPABILITIES[N_CAPABILITY];
|
|
// mappings from CAPABILITY to STATUPDATE fields
|
|
#define N_BATTERY 2 // maximum number of batteries supported by database
|
|
#define N_TEMPSENSOR 2 // maximum number of temperature sensor supported
|
|
extern const unsigned int CAPABILITY_DEFAULT;
|
|
extern const unsigned int CAPABILITY_BATTERY[N_BATTERY];
|
|
extern const unsigned int CAPABILITY_UPDATE_FIELD[N_CAPABILITY];
|
|
|
|
// Device status
|
|
#define N_LANSSTATUS 7 // (enum)
|
|
#define LANSSTATUS_NEW 0 // recently added to the database
|
|
#define LANSSTATUS_PRODUCTION 1 // device is being prepared for future use
|
|
#define LANSSTATUS_SERVICE 2 // device is in service
|
|
#define LANSSTATUS_ACTIVE 3 // (normal operational state)
|
|
#define LANSSTATUS_SHOP 4 // device is not yet sold or assigned
|
|
#define LANSSTATUS_WRITEOFF 5 // device is lost due to damage
|
|
#define LANSSTATUS_LOST 6 // device location is unknown
|
|
extern const char *LANSSTATUS[N_LANSSTATUS];
|
|
|
|
#endif /* _DATABASE_IF_H */
|