SNMP agent attached to SPI slave

Dependencies:   mbed

Committer:
lorcansmith
Date:
Thu Sep 06 12:52:48 2012 +0000
Revision:
2:25e12a7fe0aa
Parent:
1:bbae6f16a449
Open source version 1.a

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lorcansmith 0:2a53a4c3238c 1 /*****************************************************************************
lorcansmith 2:25e12a7fe0aa 2 * Copyright SEEC Ltd
lorcansmith 0:2a53a4c3238c 3 * File: IO_file.h
lorcansmith 2:25e12a7fe0aa 4 * Reference: A3600-HDR-IO_file
lorcansmith 0:2a53a4c3238c 5 * Content: Defines & declarations for HTTP server
lorcansmith 2:25e12a7fe0aa 6 * Version: 1.1
lorcansmith 0:2a53a4c3238c 7 * System: mbed
lorcansmith 0:2a53a4c3238c 8 * Target Hardware: mbed
lorcansmith 0:2a53a4c3238c 9 * Amendment Record:
lorcansmith 0:2a53a4c3238c 10 * Author: L. Smith for all versions unless otherwise specified
lorcansmith 0:2a53a4c3238c 11 0.0: 18/10/11 Initial tests
lorcansmith 0:2a53a4c3238c 12 0.1: 27/10/11 File IO handled by SPI_server class
lorcansmith 0:2a53a4c3238c 13 0.2: 23/11/11 Add SNMP_FW_VERSION & snmp_fw_version for SNMP enquiry
lorcansmith 0:2a53a4c3238c 14 0.3 22/12/11 Add new_cmd_idx to indicate which parameter has been set.
lorcansmith 0:2a53a4c3238c 15 0.4 27/12/11 Add RUN_SCAN_CMD as index for writing wiring scan enable.
lorcansmith 0:2a53a4c3238c 16 0.5 29/12/11 Add net_addrs_set for writing net address to file.
lorcansmith 2:25e12a7fe0aa 17 0.6 06/01/12 Change main CPU index for version & add indices for net addresses
lorcansmith 0:2a53a4c3238c 18 0.7 09/01/12 #define NET_ADDRESS_CHANGE to flag net address changes
lorcansmith 0:2a53a4c3238c 19 0.8 30/01/12 Add get_SPI_count() & #define SPI_COUNT = 1752
lorcansmith 0:2a53a4c3238c 20 0.9 03/05/12 Add definitions used for trap handling
lorcansmith 0:2a53a4c3238c 21 1.0 15/06/12 Make TRAP_HOST_ADDRESS contiguous with SNMP net addresses
lorcansmith 0:2a53a4c3238c 22 1.1 18/06/12 Add get_hex_mask for updates from SNMP
lorcansmith 0:2a53a4c3238c 23 */
lorcansmith 0:2a53a4c3238c 24 /****************************************************************************/
lorcansmith 0:2a53a4c3238c 25
lorcansmith 0:2a53a4c3238c 26 #ifndef IO_FILE_H
lorcansmith 0:2a53a4c3238c 27 #define IO_FILE_H
lorcansmith 0:2a53a4c3238c 28
lorcansmith 0:2a53a4c3238c 29 #include <ctype.h>
lorcansmith 0:2a53a4c3238c 30 #define __DEBUG
lorcansmith 0:2a53a4c3238c 31 #include "dbg/dbg.h"
lorcansmith 0:2a53a4c3238c 32 #include "ipaddr.h"
lorcansmith 0:2a53a4c3238c 33 //#include "rpc.h"
lorcansmith 0:2a53a4c3238c 34
lorcansmith 2:25e12a7fe0aa 35 #define H_H_LINK_MSBYTE 62 // index to main CPU head-head link status ms byte
lorcansmith 0:2a53a4c3238c 36 #define H_H_LINK_LSBYTE 63 // DEBUG head-head link status ls byte should be 63
lorcansmith 0:2a53a4c3238c 37 #define MAX_IO_REG_BYTE 63 // Maximum I/O byte checked for changes
lorcansmith 0:2a53a4c3238c 38
lorcansmith 2:25e12a7fe0aa 39 #define NET_IP_ADDRESS 1704 // index to main CPU firmware IP addresses
lorcansmith 2:25e12a7fe0aa 40 #define NET_ADDRESS_MASK 1708 // index to main CPU firmware address mask
lorcansmith 2:25e12a7fe0aa 41 #define NET_GATEWAY_ADDRS 1712 // index to main CPU firmware gateway address
lorcansmith 2:25e12a7fe0aa 42 #define NET_DNS_ADDRESS 1716 // index to main CPU firmware DNS address
lorcansmith 2:25e12a7fe0aa 43 #define TRAP_HOST_ADDRESS 1720 // index to main CPU firmware address for trap host
lorcansmith 2:25e12a7fe0aa 44 #define NET_ADDRESS_CHANGE 1736 // index to main CPU address change flag
lorcansmith 2:25e12a7fe0aa 45 #define SPI_COUNT 1752 // index to main CPU SPI write count (activity indicator)
lorcansmith 2:25e12a7fe0aa 46 #define VERSION_IDX 1754 // index to main CPU firmware version number
lorcansmith 2:25e12a7fe0aa 47 #define RUN_SCAN_IDX 1758 // index to wiring scan enable in main CPU unit
lorcansmith 2:25e12a7fe0aa 48 #define NUM_CARD_IDX 2045 // index to number of card in main CPU unit
lorcansmith 2:25e12a7fe0aa 49 #define COMMS_IDX 2046 // index to main CPU Modbus comms type and speed
lorcansmith 2:25e12a7fe0aa 50 #define UNIT_ID_IDX 2047 // index to main CPU Modbus comms unit ident
lorcansmith 0:2a53a4c3238c 51 #define MAX_RAM 2048 // size of RAM to copy
lorcansmith 0:2a53a4c3238c 52 #define UNIT_ID_CMD 1 // index to command for Modbus comms unit ident
lorcansmith 0:2a53a4c3238c 53 #define RUN_SCAN_CMD 2 // index to command for 1000PX run scan enable
lorcansmith 0:2a53a4c3238c 54
lorcansmith 2:25e12a7fe0aa 55 /* v0.9: Trap definitions addeds */
lorcansmith 2:25e12a7fe0aa 56 #define ONLY_TRAP 0 // index for trap when only one used
lorcansmith 0:2a53a4c3238c 57 #define DISABLED 0
lorcansmith 0:2a53a4c3238c 58 #define ENABLED 1
lorcansmith 0:2a53a4c3238c 59
lorcansmith 0:2a53a4c3238c 60
lorcansmith 0:2a53a4c3238c 61 class SPI_Server
lorcansmith 0:2a53a4c3238c 62 {
lorcansmith 0:2a53a4c3238c 63 public:
lorcansmith 0:2a53a4c3238c 64 ///Instantiates the SPI Server
lorcansmith 0:2a53a4c3238c 65 SPI_Server( const char * name = NULL );
lorcansmith 0:2a53a4c3238c 66 virtual ~SPI_Server();
lorcansmith 0:2a53a4c3238c 67
lorcansmith 0:2a53a4c3238c 68 int update_IO_file();
lorcansmith 0:2a53a4c3238c 69 int read( void );
lorcansmith 0:2a53a4c3238c 70 void write( int new_offset );
lorcansmith 0:2a53a4c3238c 71 unsigned char get_byte( unsigned short idx );
lorcansmith 0:2a53a4c3238c 72 void put_byte( unsigned short idx, unsigned char new_byte );
lorcansmith 0:2a53a4c3238c 73 unsigned short get_error( void );
lorcansmith 0:2a53a4c3238c 74 unsigned short get_SPI_count( void );
lorcansmith 0:2a53a4c3238c 75 unsigned char * net_address_ptr( void );
lorcansmith 0:2a53a4c3238c 76 unsigned char * trap_host_ptr( void );
lorcansmith 0:2a53a4c3238c 77
lorcansmith 0:2a53a4c3238c 78 #if 0
lorcansmith 0:2a53a4c3238c 79 //#ifdef MBED_RPC
lorcansmith 0:2a53a4c3238c 80 virtual const struct rpc_method *get_rpc_methods();
lorcansmith 0:2a53a4c3238c 81 static struct rpc_class *get_rpc_class();
lorcansmith 0:2a53a4c3238c 82 #endif // MBED_RPC
lorcansmith 0:2a53a4c3238c 83
lorcansmith 0:2a53a4c3238c 84 private:
lorcansmith 0:2a53a4c3238c 85 const char *name;
lorcansmith 0:2a53a4c3238c 86 FILE *fp; // handle for file to be created
lorcansmith 0:2a53a4c3238c 87 unsigned short reg_offset; // register offset for HTTP display
lorcansmith 0:2a53a4c3238c 88 unsigned char ram_img[ MAX_RAM ];
lorcansmith 0:2a53a4c3238c 89 };
lorcansmith 0:2a53a4c3238c 90
lorcansmith 0:2a53a4c3238c 91 extern unsigned char cmd_buf[]; // store for commands from Ethernet
lorcansmith 0:2a53a4c3238c 92 extern unsigned char new_cmd_idx;
lorcansmith 0:2a53a4c3238c 93 extern const char * snmp_fw_version;
lorcansmith 0:2a53a4c3238c 94
lorcansmith 0:2a53a4c3238c 95 extern unsigned char ip_ad[];
lorcansmith 0:2a53a4c3238c 96 extern unsigned char msk_ad[];
lorcansmith 0:2a53a4c3238c 97 extern unsigned char gwy_ad[];
lorcansmith 0:2a53a4c3238c 98 extern unsigned char dns_ad[];
lorcansmith 0:2a53a4c3238c 99 extern unsigned char th_ad[];
lorcansmith 0:2a53a4c3238c 100 extern unsigned char net_addrs_set; // flags net address change
lorcansmith 0:2a53a4c3238c 101
lorcansmith 0:2a53a4c3238c 102 extern unsigned char blink_led;
lorcansmith 0:2a53a4c3238c 103
lorcansmith 0:2a53a4c3238c 104 extern SPI_Server fsvr;
lorcansmith 0:2a53a4c3238c 105 extern void check4write_offset( char * req );
lorcansmith 2:25e12a7fe0aa 106 extern char * get_hex_mask( void );
lorcansmith 0:2a53a4c3238c 107
lorcansmith 0:2a53a4c3238c 108 extern IpAddr mip;
lorcansmith 0:2a53a4c3238c 109
lorcansmith 0:2a53a4c3238c 110
lorcansmith 0:2a53a4c3238c 111
lorcansmith 0:2a53a4c3238c 112 #endif // #ifndef IO_FILE_H