SNMP agent attached to SPI slave

Dependencies:   mbed

Revision:
0:2a53a4c3238c
Child:
1:bbae6f16a449
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/IO_file.h	Mon Aug 13 15:07:40 2012 +0000
@@ -0,0 +1,123 @@
+/*****************************************************************************
+*                     Copyright Field Electronics Ltd
+* File:             IO_file.h
+* Reference:        1000PX-BM1660-HDR-IO_file
+* Content:          Defines & declarations for HTTP server
+* Version:          1.1
+* System:           mbed
+* Target Hardware:  mbed                                  
+* Amendment Record:    
+* Author:   L. Smith for all versions unless otherwise specified
+  0.0:  18/10/11    Initial tests 
+  0.1:  27/10/11    File IO handled by SPI_server class
+  0.2:  23/11/11    Add SNMP_FW_VERSION & snmp_fw_version for SNMP enquiry
+  0.3   22/12/11    Add new_cmd_idx to indicate which parameter has been set. 
+  0.4   27/12/11    Add RUN_SCAN_CMD as index for writing wiring scan enable. 
+  0.5   29/12/11    Add net_addrs_set for writing net address to file. 
+  0.6   06/01/12    Change 3000 index for version & add indices for net addresses 
+  0.7   09/01/12    #define NET_ADDRESS_CHANGE to flag net address changes 
+  0.8   30/01/12    Add get_SPI_count() & #define SPI_COUNT = 1752
+  0.9   03/05/12    Add definitions used for trap handling
+  1.0   15/06/12    Make TRAP_HOST_ADDRESS contiguous with SNMP net addresses
+  1.1   18/06/12    Add get_hex_mask for updates from SNMP
+*/
+/****************************************************************************/
+
+#ifndef IO_FILE_H
+#define IO_FILE_H
+
+#include <ctype.h>
+#define __DEBUG
+#include "dbg/dbg.h"
+#include "ipaddr.h"
+#include "private_mib.h"
+//#include "rpc.h"
+
+#define H_H_LINK_MSBYTE     62        // index to 3000 head-head link status ms byte
+#define H_H_LINK_LSBYTE     63        // DEBUG head-head link status ls byte should be 63
+#define MAX_IO_REG_BYTE     63        // Maximum I/O byte checked for changes
+
+#define NET_IP_ADDRESS      1704      // index to 3000 firmware IP addresses
+#define NET_ADDRESS_MASK    1708      // index to 3000 firmware address mask
+#define NET_GATEWAY_ADDRS   1712      // index to 3000 firmware gateway address
+#define NET_DNS_ADDRESS     1716      // index to 3000 firmware DNS address
+#define TRAP_HOST_ADDRESS   1720      // index to 3000 firmware address for trap host
+#define NET_ADDRESS_CHANGE  1736      // index to 3000 address change flag
+#define SPI_COUNT     1752            // index to 3000 SPI write count (activity indicator)
+#define VERSION_IDX   1754            // index to 3000 firmware version number
+#define RUN_SCAN_IDX  1758            // index to wiring scan enable in 3000 unit 
+#define NUM_CARD_IDX  2045            // index to number of card in 3000 unit
+#define COMMS_IDX     2046            // index to 3000 Modbus comms type and speed
+#define UNIT_ID_IDX   2047            // index to 3000 Modbus comms unit ident
+#define MAX_RAM       2048            // size of RAM to copy
+#define UNIT_ID_CMD   1               // index to command for Modbus comms unit ident
+#define RUN_SCAN_CMD  2               // index to command for 1000PX run scan enable
+
+/* v0.9: Trap definitions added */
+#define ONLY_TRAP       0               // index for trap when only one used
+#define DISABLED        0
+#define ENABLED         1
+
+#define MSG_LNGTH       16              // length of strings for alarm & location messages
+#define NUM_MASK        8               // MAX_ALARM_ID # of io_masks available for alarms
+
+class SPI_Server
+{
+public:
+  ///Instantiates the SPI Server
+  SPI_Server( const char * name = NULL );
+  virtual ~SPI_Server();
+  
+  int update_IO_file();
+  int read( void );
+  void write( int new_offset );
+  unsigned char get_byte( unsigned short idx );
+  void put_byte( unsigned short idx, unsigned char new_byte );
+  unsigned short get_error( void );
+  unsigned short get_SPI_count( void );
+  unsigned char * net_address_ptr( void );
+  unsigned char * trap_host_ptr( void );
+  
+#if 0
+//#ifdef MBED_RPC
+  virtual const struct rpc_method *get_rpc_methods();
+  static struct rpc_class *get_rpc_class();
+#endif    // MBED_RPC
+
+private:
+  const char *name;    
+  FILE *fp;                           // handle for file to be created
+  unsigned short reg_offset;          // register offset for HTTP display
+  unsigned char ram_img[ MAX_RAM ];
+};
+
+extern unsigned char cmd_buf[];         // store for commands from Ethernet
+extern unsigned char new_cmd_idx;
+extern const char * snmp_fw_version;
+
+extern unsigned char ip_ad[];
+extern unsigned char msk_ad[];
+extern unsigned char gwy_ad[];
+extern unsigned char dns_ad[];
+extern unsigned char th_ad[];
+extern unsigned char net_addrs_set;     // flags net address change
+extern unsigned char alarm_str_set;     // flags alarm string update from SNMP
+
+extern unsigned char blink_led;
+
+extern char alarm_msg[NUM_MASK][MSG_LNGTH];  // alarm messages associated with io_masks
+extern unsigned long io_mask[];           // masks for alarms on IO registers 
+extern unsigned long mask4_IO_registers;  // mask for IO regs ignoring IO31 & 32
+
+
+extern SPI_Server fsvr;
+extern void check4write_offset( char * req );
+extern char * get_hex_mask( unsigned long bit_mask );
+extern char * get_alarm_string(unsigned char alarm_idx);
+extern int read_alarm_from_file(unsigned char alarm_idx);
+
+extern IpAddr mip;
+
+
+
+#endif   // #ifndef IO_FILE_H