Norimasa Okamoto / Mbed 2 deprecated emuISP

Dependencies:   mbed

Committer:
va009039
Date:
Tue Mar 22 16:25:41 2016 +0900
Revision:
3:ccc673a10485
Parent:
2:e3c085ac77f1
Child:
4:05f33cc747fd
lpc1114fn28

Who changed what in which revision?

UserRevisionLine numberNew contents of line
va009039 3:ccc673a10485 1 // BaseEmuISP.h 2016/3/22
va009039 1:4ff199bddbc1 2 #pragma once
va009039 1:4ff199bddbc1 3 #include <string>
va009039 1:4ff199bddbc1 4 #include <vector>
va009039 3:ccc673a10485 5 #include <stdint.h>
va009039 1:4ff199bddbc1 6
va009039 2:e3c085ac77f1 7 typedef std::vector<int> vint_t;
va009039 3:ccc673a10485 8 typedef std::vector<uint8_t> vbyte_t;
va009039 2:e3c085ac77f1 9
va009039 2:e3c085ac77f1 10 enum Mode_t {
va009039 2:e3c085ac77f1 11 M_RESET = 0,
va009039 2:e3c085ac77f1 12 M_SYNC,
va009039 2:e3c085ac77f1 13 M_CMD,
va009039 2:e3c085ac77f1 14 M_CMD_W_DATA,
va009039 2:e3c085ac77f1 15 M_CMD_R_DATA,
va009039 2:e3c085ac77f1 16 M_CMD_J,
va009039 2:e3c085ac77f1 17 M_CMD_K,
va009039 2:e3c085ac77f1 18 M_CMD_N,
va009039 2:e3c085ac77f1 19 M_CMD_S,
va009039 2:e3c085ac77f1 20 };
va009039 1:4ff199bddbc1 21
va009039 2:e3c085ac77f1 22 enum ReturnCode_t {
va009039 2:e3c085ac77f1 23 CMD_SUCCESS = 0,
va009039 2:e3c085ac77f1 24 INVALID_COMMAND = 1,
va009039 2:e3c085ac77f1 25 SRC_ADDR_ERROR = 2,
va009039 2:e3c085ac77f1 26 DST_ADDR_ERROR = 3,
va009039 2:e3c085ac77f1 27 SRC_ADDR_NOT_MAPPED = 4,
va009039 2:e3c085ac77f1 28 DST_ADDR_NOT_MAPPED = 5,
va009039 2:e3c085ac77f1 29 COUNT_ERROR = 6,
va009039 2:e3c085ac77f1 30 INVALID_SECTOR = 7,
va009039 2:e3c085ac77f1 31 SECTOR_NOT_BLANK = 8,
va009039 2:e3c085ac77f1 32 SECTOR_NOT_PREPARED_FOR_WRITE_OPERATION = 9,
va009039 2:e3c085ac77f1 33 COMPARE_ERROR = 10,
va009039 2:e3c085ac77f1 34 BUSY = 11,
va009039 2:e3c085ac77f1 35 PARAM_ERROR = 12,
va009039 2:e3c085ac77f1 36 ADDR_ERROR = 13,
va009039 2:e3c085ac77f1 37 ADDR_NOT_MAPPED = 14,
va009039 2:e3c085ac77f1 38 CMD_LOCKED = 15,
va009039 2:e3c085ac77f1 39 INVALID_CODE = 16,
va009039 2:e3c085ac77f1 40 INVALID_BAUD_RATE = 17,
va009039 2:e3c085ac77f1 41 INVALID_STOP_BIT = 18,
va009039 2:e3c085ac77f1 42 CODE_READ_PROTECTIN_ENABLED = 19,
va009039 2:e3c085ac77f1 43 };
va009039 1:4ff199bddbc1 44
va009039 1:4ff199bddbc1 45 class BaseEmuISP {
va009039 1:4ff199bddbc1 46 public:
va009039 1:4ff199bddbc1 47 void Reset();
va009039 1:4ff199bddbc1 48 void Poll();
va009039 1:4ff199bddbc1 49
va009039 1:4ff199bddbc1 50 protected:
va009039 3:ccc673a10485 51 virtual int BootCodeVersion() { return 4<<8|13; } // 4.13
va009039 2:e3c085ac77f1 52 virtual int PartID() { return 0x00008100; } // LPC810M021FN8
va009039 3:ccc673a10485 53 virtual bool UuencodeMode() { return false; }
va009039 3:ccc673a10485 54 virtual bool WriteData(int addr, int c) { return false; }
va009039 1:4ff199bddbc1 55 virtual int ReadData(int addr) { return 0; }
va009039 3:ccc673a10485 56 virtual bool CopyData(int dst, int src, int count) { return false; }
va009039 2:e3c085ac77f1 57 virtual bool Compare(int addr1, int addr2, int count) { return true; }
va009039 2:e3c085ac77f1 58 virtual bool Prepare(int sector) { return true; }
va009039 2:e3c085ac77f1 59 virtual bool Erase(int sector) { return true; }
va009039 2:e3c085ac77f1 60 virtual bool Blank(int sector) { return true; }
va009039 1:4ff199bddbc1 61 virtual int Getch() = 0;
va009039 1:4ff199bddbc1 62 virtual void Putch(int c) = 0;
va009039 1:4ff199bddbc1 63 virtual void DebugPutch(int c) { return; }
va009039 1:4ff199bddbc1 64
va009039 1:4ff199bddbc1 65 private:
va009039 1:4ff199bddbc1 66 bool sync();
va009039 2:e3c085ac77f1 67 ReturnCode_t cmd(const char* s);
va009039 2:e3c085ac77f1 68 ReturnCode_t cmd_u(vint_t &param);
va009039 2:e3c085ac77f1 69 ReturnCode_t cmd_b(vint_t &param);
va009039 2:e3c085ac77f1 70 ReturnCode_t cmd_a(vint_t &param);
va009039 2:e3c085ac77f1 71 ReturnCode_t cmd_w(vint_t &param);
va009039 2:e3c085ac77f1 72 ReturnCode_t cmd_r(vint_t &param);
va009039 2:e3c085ac77f1 73 ReturnCode_t cmd_p(vint_t &param);
va009039 2:e3c085ac77f1 74 ReturnCode_t cmd_c(vint_t &param);
va009039 2:e3c085ac77f1 75 ReturnCode_t cmd_g(vint_t &param);
va009039 2:e3c085ac77f1 76 ReturnCode_t cmd_e(vint_t &param);
va009039 2:e3c085ac77f1 77 ReturnCode_t cmd_i(vint_t &param);
va009039 2:e3c085ac77f1 78 ReturnCode_t cmd_j(vint_t &param);
va009039 2:e3c085ac77f1 79 ReturnCode_t cmd_k(vint_t &param);
va009039 2:e3c085ac77f1 80 ReturnCode_t cmd_m(vint_t &param);
va009039 2:e3c085ac77f1 81 ReturnCode_t cmd_n(vint_t &param);
va009039 2:e3c085ac77f1 82 ReturnCode_t cmd_s(vint_t &param);
va009039 3:ccc673a10485 83 bool cmd_w_data();
va009039 3:ccc673a10485 84 bool cmd_r_data();
va009039 1:4ff199bddbc1 85 void putln(const char *s);
va009039 1:4ff199bddbc1 86 bool line_proc();
va009039 1:4ff199bddbc1 87 void debugPrintf(const char *format, ...);
va009039 2:e3c085ac77f1 88 Mode_t mode;
va009039 1:4ff199bddbc1 89 int seq;
va009039 1:4ff199bddbc1 90 bool echoFlag;
va009039 1:4ff199bddbc1 91 bool lockFlag;
va009039 1:4ff199bddbc1 92 std::string line;
va009039 1:4ff199bddbc1 93 int freq;
va009039 1:4ff199bddbc1 94 int addr;
va009039 3:ccc673a10485 95 int dataLine;
va009039 3:ccc673a10485 96 int dataCount;
va009039 3:ccc673a10485 97 int dataCurrent;
va009039 3:ccc673a10485 98 int dataCksum;
va009039 3:ccc673a10485 99 struct {
va009039 3:ccc673a10485 100 uint8_t major;
va009039 3:ccc673a10485 101 uint8_t minor;
va009039 3:ccc673a10485 102 } version;
va009039 1:4ff199bddbc1 103 };
va009039 1:4ff199bddbc1 104