Lorcan Smith
/
Enet_SPI
SNMP agent attached to SPI slave
IO_file.h@2:25e12a7fe0aa, 2012-09-06 (annotated)
- 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?
User | Revision | Line number | New 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 |