-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprogrammer.h
65 lines (52 loc) · 1.5 KB
/
programmer.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
65
#ifndef PROGRAMMER_H
#define PROGRAMMER_H
#include <iqrf.h>
#include "hex_parser.h"
/* maximum length for usb rx and tx buffer */
#define BUF_LEN 64
/* every usb prog. write has following entries
CMD_PROG, EEPROM_DATA or FLASH_DATA,
UNKNOWN, address, data, checksum
*/
#define CMD_ENTER_PROG 0x02
#define UNKNOWN_PROG 0xE6
#define CMD_PROG 0x07
#define EEPROM_DATA 0xF3
#define FLASH_DATA 0xF6
#define UNKNOWN_DATA 0xA2
/* flash and eeprom data types */
#define EEPROM_APP 0x01
#define EEPROM_USER 0x02
#define FLASH_PROG 0x03
#define FLASH_BLOCK_SIZE (32)
#define APP_EEPROM_BASE_ADDR (0xA0)
#define USR_EEPROM_BASE_ADDR (0x00)
#define FLASH_BASE_ADDR_16F88 (0x0E00)
#define FLASH_BASE_ADDR_16F886 (0x1C00)
#define FLASH_ADDR_STEP (0x10)
class programmer {
public:
programmer();
~programmer();
hex_parser *parser;
void enter_prog_mode();
void enter_endprog_mode();
int request_module_id(void);
int get_module_id(void);
unsigned char module_id[20];
unsigned char spi_tx_data[35];
int send_prog_data(int data_type, unsigned char *data, int data_len,
unsigned short addr);
int reset_module();
void release();
int write_read_spi_data(unsigned char *data, int data_len, bool write_read);
int write_read_test_spi_data(unsigned char *data, int data_len);
int init();
int get_status();
void reset();
int crc(unsigned char *buff, int len);
private:
//iqrf_dev *dev;
unsigned char usr_eeprom;
};
#endif // PROGRAMMER_H