MMEx with SPI Slave to allow legacy devices to communicate with modern media such as USB, SD cards, the internet and all of the mbed\'s other interfaces

Dependencies:   NetServices MSCUsbHost mbed TMP102 SDFileSystem

Committer:
DeMein
Date:
Sun Feb 27 18:54:40 2011 +0000
Revision:
0:67a55a82ce06
Version as submitted to the NXP Design Challenge

Who changed what in which revision?

UserRevisionLine numberNew contents of line
DeMein 0:67a55a82ce06 1 /* MMEx for MBED - MMEx specific functions
DeMein 0:67a55a82ce06 2 * Copyright (c) 2011 MK
DeMein 0:67a55a82ce06 3 *
DeMein 0:67a55a82ce06 4 * Permission is hereby granted, free of charge, to any person obtaining a copy
DeMein 0:67a55a82ce06 5 * of this software and associated documentation files (the "Software"), to deal
DeMein 0:67a55a82ce06 6 * in the Software without restriction, including without limitation the rights
DeMein 0:67a55a82ce06 7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
DeMein 0:67a55a82ce06 8 * copies of the Software, and to permit persons to whom the Software is
DeMein 0:67a55a82ce06 9 * furnished to do so, subject to the following conditions:
DeMein 0:67a55a82ce06 10 *
DeMein 0:67a55a82ce06 11 * The above copyright notice and this permission notice shall be included in
DeMein 0:67a55a82ce06 12 * all copies or substantial portions of the Software.
DeMein 0:67a55a82ce06 13 *
DeMein 0:67a55a82ce06 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
DeMein 0:67a55a82ce06 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
DeMein 0:67a55a82ce06 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
DeMein 0:67a55a82ce06 17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
DeMein 0:67a55a82ce06 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
DeMein 0:67a55a82ce06 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
DeMein 0:67a55a82ce06 20 * THE SOFTWARE.
DeMein 0:67a55a82ce06 21 */
DeMein 0:67a55a82ce06 22
DeMein 0:67a55a82ce06 23 /**
DeMein 0:67a55a82ce06 24 \file mmex.h
DeMein 0:67a55a82ce06 25 \brief MMEx specific functions with all global includes
DeMein 0:67a55a82ce06 26 */
DeMein 0:67a55a82ce06 27
DeMein 0:67a55a82ce06 28 #ifndef MMEX_H
DeMein 0:67a55a82ce06 29 #define MMEX_H
DeMein 0:67a55a82ce06 30
DeMein 0:67a55a82ce06 31 #include "spissp.h"
DeMein 0:67a55a82ce06 32 #include "mbed.h"
DeMein 0:67a55a82ce06 33
DeMein 0:67a55a82ce06 34 #include "mbeddefs.h"
DeMein 0:67a55a82ce06 35
DeMein 0:67a55a82ce06 36 #include "rpc.h"
DeMein 0:67a55a82ce06 37 #include "RPCFunction.h"
DeMein 0:67a55a82ce06 38 #include "RPCVariable.h"
DeMein 0:67a55a82ce06 39
DeMein 0:67a55a82ce06 40 #include "helper.h"
DeMein 0:67a55a82ce06 41 #include "debug.h"
DeMein 0:67a55a82ce06 42
DeMein 0:67a55a82ce06 43 #include "cfuncs.h"
DeMein 0:67a55a82ce06 44 #include "ffuncs.h"
DeMein 0:67a55a82ce06 45 #include "mfuncs.h"
DeMein 0:67a55a82ce06 46 #include "nfuncs.h"
DeMein 0:67a55a82ce06 47 #include "pfuncs.h"
DeMein 0:67a55a82ce06 48 #include "rfuncs.h"
DeMein 0:67a55a82ce06 49 #include "ufuncs.h"
DeMein 0:67a55a82ce06 50
DeMein 0:67a55a82ce06 51 #include "MSCFileSystem.h"
DeMein 0:67a55a82ce06 52 #include "SDFileSystem.h"
DeMein 0:67a55a82ce06 53
DeMein 0:67a55a82ce06 54 #include <string> // allow use of string classes
DeMein 0:67a55a82ce06 55
DeMein 0:67a55a82ce06 56 #include "EthernetNetIf.h"
DeMein 0:67a55a82ce06 57 #include "HTTPClient.h"
DeMein 0:67a55a82ce06 58 #include "NTPClient.h"
DeMein 0:67a55a82ce06 59 #include "HTTPServer.h"
DeMein 0:67a55a82ce06 60 #include "HTTPStream.h"
DeMein 0:67a55a82ce06 61 #include "RPCFunction.h"
DeMein 0:67a55a82ce06 62
DeMein 0:67a55a82ce06 63 #define bufsize 255
DeMein 0:67a55a82ce06 64
DeMein 0:67a55a82ce06 65 extern char inbuf[bufsize];
DeMein 0:67a55a82ce06 66 extern char outbuf[bufsize];
DeMein 0:67a55a82ce06 67
DeMein 0:67a55a82ce06 68 extern int rx_max;
DeMein 0:67a55a82ce06 69 extern int tx_max;
DeMein 0:67a55a82ce06 70
DeMein 0:67a55a82ce06 71 // startup values
DeMein 0:67a55a82ce06 72 #define start_baud 9600 // baudrate after startup
DeMein 0:67a55a82ce06 73
DeMein 0:67a55a82ce06 74 #define c_error 'E'
DeMein 0:67a55a82ce06 75 #define c_busy 'B'
DeMein 0:67a55a82ce06 76
DeMein 0:67a55a82ce06 77 #define c_rpc '/'
DeMein 0:67a55a82ce06 78 #define c_rpcapp '+'
DeMein 0:67a55a82ce06 79 #define c_rpcexe '*'
DeMein 0:67a55a82ce06 80
DeMein 0:67a55a82ce06 81 // control strings
DeMein 0:67a55a82ce06 82 #define cc_arrow ">>"
DeMein 0:67a55a82ce06 83 #define cc_prompt ">!"
DeMein 0:67a55a82ce06 84 #define cc_null ">N"
DeMein 0:67a55a82ce06 85 #define cc_eof ">F"
DeMein 0:67a55a82ce06 86 #define cc_error ">E"
DeMein 0:67a55a82ce06 87 #define cc_busy ">B"
DeMein 0:67a55a82ce06 88
DeMein 0:67a55a82ce06 89 // main command grouping
DeMein 0:67a55a82ce06 90 #define cmd_m 'M'
DeMein 0:67a55a82ce06 91 #define cmd_c 'C'
DeMein 0:67a55a82ce06 92 #define cmd_f 'F'
DeMein 0:67a55a82ce06 93 #define cmd_r 'R'
DeMein 0:67a55a82ce06 94 #define cmd_rpc '/'
DeMein 0:67a55a82ce06 95 #define cmd_n 'N'
DeMein 0:67a55a82ce06 96 #define cmd_p 'P'
DeMein 0:67a55a82ce06 97 #define cmd_u 'U'
DeMein 0:67a55a82ce06 98 #define cmd_c 'C'
DeMein 0:67a55a82ce06 99
DeMein 0:67a55a82ce06 100 #define command_mode true
DeMein 0:67a55a82ce06 101 #define data_mode false
DeMein 0:67a55a82ce06 102
DeMein 0:67a55a82ce06 103 // error messages, generic
DeMein 0:67a55a82ce06 104 #define noerror 0
DeMein 0:67a55a82ce06 105 #define err_notimplemented 1 // command not implemented
DeMein 0:67a55a82ce06 106 #define err_notrecognized 2 // invalid command parameter
DeMein 0:67a55a82ce06 107 #define err_novalidcommand 3 // no valid command found
DeMein 0:67a55a82ce06 108
DeMein 0:67a55a82ce06 109 // error messages, file operations
DeMein 0:67a55a82ce06 110 #define err_filenotopen 10 // could not open file
DeMein 0:67a55a82ce06 111 #define err_not_mounted 11 // error in mounting file
DeMein 0:67a55a82ce06 112 #define err_handle_used 12 // file handle in use
DeMein 0:67a55a82ce06 113 #define err_no_handle 13 // file handle not defined
DeMein 0:67a55a82ce06 114 #define err_directory 14 // error in opening directory
DeMein 0:67a55a82ce06 115 #define err_seek 15 // error in seek
DeMein 0:67a55a82ce06 116
DeMein 0:67a55a82ce06 117 #define err_paramnoxeq 20 // error executing parameter string
DeMein 0:67a55a82ce06 118
DeMein 0:67a55a82ce06 119 #define err_net_timeout 30 // network timout
DeMein 0:67a55a82ce06 120 #define err_net_NTP 31 // error in NTP
DeMein 0:67a55a82ce06 121
DeMein 0:67a55a82ce06 122 // error message text definitions
DeMein 0:67a55a82ce06 123 #define err_0 "no error"
DeMein 0:67a55a82ce06 124 #define err_1 "command not implemented"
DeMein 0:67a55a82ce06 125 #define err_2 "invalid command parameter"
DeMein 0:67a55a82ce06 126 #define err_3 "no valid command found"
DeMein 0:67a55a82ce06 127
DeMein 0:67a55a82ce06 128 #define err_10 "could not open file"
DeMein 0:67a55a82ce06 129 #define err_11 "error in mounting file"
DeMein 0:67a55a82ce06 130 #define err_12 "file handle in use"
DeMein 0:67a55a82ce06 131 #define err_13 "file handle not defined"
DeMein 0:67a55a82ce06 132 #define err_14 "error in opening directory"
DeMein 0:67a55a82ce06 133 #define err_15 "error in seek"
DeMein 0:67a55a82ce06 134 #define err_16 "error"
DeMein 0:67a55a82ce06 135 #define err_17 "error"
DeMein 0:67a55a82ce06 136 #define err_18 "error"
DeMein 0:67a55a82ce06 137 #define err_19 "error"
DeMein 0:67a55a82ce06 138 #define err_20 "cannot execute paramstring"
DeMein 0:67a55a82ce06 139
DeMein 0:67a55a82ce06 140 #define err_21 "error"
DeMein 0:67a55a82ce06 141 #define err_22 "error"
DeMein 0:67a55a82ce06 142 #define err_23 "error"
DeMein 0:67a55a82ce06 143 #define err_24 "error"
DeMein 0:67a55a82ce06 144 #define err_25 "error"
DeMein 0:67a55a82ce06 145 #define err_26 "error"
DeMein 0:67a55a82ce06 146 #define err_27 "error"
DeMein 0:67a55a82ce06 147 #define err_28 "error"
DeMein 0:67a55a82ce06 148 #define err_29 "error"
DeMein 0:67a55a82ce06 149
DeMein 0:67a55a82ce06 150 #define err_30 "network timeout"
DeMein 0:67a55a82ce06 151 #define err_31 "error in NTP"
DeMein 0:67a55a82ce06 152 #define err_32 "error"
DeMein 0:67a55a82ce06 153 #define err_33 "error"
DeMein 0:67a55a82ce06 154 #define err_34 "error"
DeMein 0:67a55a82ce06 155 #define err_35 "error"
DeMein 0:67a55a82ce06 156 #define err_36 "error"
DeMein 0:67a55a82ce06 157 #define err_37 "error"
DeMein 0:67a55a82ce06 158 #define err_38 "error"
DeMein 0:67a55a82ce06 159 #define err_39 "error"
DeMein 0:67a55a82ce06 160
DeMein 0:67a55a82ce06 161
DeMein 0:67a55a82ce06 162 #define msg_welcome "MMEx "
DeMein 0:67a55a82ce06 163 #define msg_version __DATE__
DeMein 0:67a55a82ce06 164
DeMein 0:67a55a82ce06 165 extern int err_num;
DeMein 0:67a55a82ce06 166 extern int last_err;
DeMein 0:67a55a82ce06 167 extern int tmode;
DeMein 0:67a55a82ce06 168 extern bool upcase; // global for change of case for text output
DeMein 0:67a55a82ce06 169
DeMein 0:67a55a82ce06 170 void send_prompt();
DeMein 0:67a55a82ce06 171 void welcome();
DeMein 0:67a55a82ce06 172 void do_maindefault();
DeMein 0:67a55a82ce06 173 void send_int(int val);
DeMein 0:67a55a82ce06 174 void send_2int(int val);
DeMein 0:67a55a82ce06 175 void send_error(int val);
DeMein 0:67a55a82ce06 176 void send_status();
DeMein 0:67a55a82ce06 177
DeMein 0:67a55a82ce06 178 #endif