-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMKCALC.h
64 lines (53 loc) · 1.73 KB
/
MKCALC.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/***************************************************
* MKCALC.h - Core of MKCalk library for linking *
* MK-52/61 calculators and Arduino. *
* Created by _______________________ *
* 2016-_____________________________ *
***************************************************/
#ifndef MKCALC_H
#define MKCALC_H
#include "Arduino.h"
#include "HardwareSerial.h"
#define NOP5 __asm__ __volatile__ ("nop\n\tnop\n\tnop\n\tnop\n\tnop\n\t")
typedef enum {
WAIT_A_START, //Quick search mark
WAIT_A_MARK, //Precise positioning of mark
READ_BITS //InSync
} readStateType;
typedef enum {
WAIT_WRITE_COMMAND,
INIT_WRITE,
WRITE_IN_PROGRES
} write2mkStateType;
struct commandQueueStruct {
uint8_t in;
uint8_t out;
uint8_t command[16];
};
class MKCALC {
public:
MKCALC();
void setSerial(HardwareSerial* serial);
void MemoryPagesPrint(volatile uint8_t* memDump);
void WriteRamToRom(uint8_t* memDump);
void WriteRamToMK(uint8_t* memDump);
void setTetrad(uint8_t val, uint16_t ind, volatile uint8_t* memDump);
//static volatile byte cmd_state;
static volatile readStateType readState;
static volatile uint16_t posRAM;
static volatile uint8_t skipClockCycle;
static volatile uint8_t tempOut;
static volatile write2mkStateType dumpWriteToMkStatus;
static volatile uint8_t* dumpToMk;
static volatile uint16_t byteNumToMk;
static void interruptSPI();
static volatile uint8_t RAMdata[315];
static volatile commandQueueStruct commandQ;
protected:
HardwareSerial* serial_;
private:
static byte readTetrad(uint16_t ind, volatile uint8_t* memDump);
static volatile uint8_t fixCounter;
volatile byte Timsk0_temp;
};
#endif // MKCALC_H