Norimasa Okamoto / Mbed 2 deprecated emuISP

Dependencies:   mbed

Committer:
va009039
Date:
Fri Mar 25 06:08:40 2016 +0900
Revision:
5:e2c275b33bbf
Parent:
4:05f33cc747fd
mystring class.

Who changed what in which revision?

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