Norimasa Okamoto / Mbed 2 deprecated emuISP

Dependencies:   mbed

Committer:
va009039
Date:
Wed Mar 23 09:11:05 2016 +0900
Revision:
4:05f33cc747fd
Parent:
3:ccc673a10485
Child:
5:e2c275b33bbf
remove std::vector.

Who changed what in which revision?

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