Skip to content

Commit b722f96

Browse files
committed
Added format reader interface.
1 parent 0df6607 commit b722f96

7 files changed

Lines changed: 62 additions & 6 deletions

File tree

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# Changelog
22

3+
# Unreleased
4+
5+
- added format reader interface (reader/reader.c)
6+
- reader for different file formats can be now added to reader/format/
7+
- for example reader/format/ihex.c to read the intel hex format
8+
39
# v.0.8.12 - 2021-08-10
410

511
- reduction of heap usage and overall memory usage

engine/include/reader/fmt.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/* File Format Enumeration Header */
2+
3+
#ifndef VMCU_FMT_H
4+
#define VMCU_FMT_H
5+
6+
typedef enum {
7+
8+
VMCU_FMT_IHEX
9+
10+
} VMCU_FMT;
11+
12+
#endif
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* Intel Hex Reader Header */
22

3-
#ifndef VMCU_IHEX_READER_H
4-
#define VMCU_IHEX_READER_H
3+
#ifndef VMCU_IHEX_H
4+
#define VMCU_IHEX_H
55

66
// C Headers
77
#include <inttypes.h>

engine/include/reader/reader.h

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
/* Format Reader Header */
2+
3+
#ifndef VMCU_READER_H
4+
#define VMCU_READER_H
5+
6+
// C Headers
7+
#include <inttypes.h>
8+
9+
// Project Headers
10+
#include "engine/include/reader/fmt.h"
11+
12+
typedef struct vmcu_binary_buffer vmcu_binary_buffer_t;
13+
14+
extern vmcu_binary_buffer_t* vmcu_read_format(const VMCU_FMT fmt, const char *file, uint32_t *size);
15+
16+
#endif

engine/src/decoder/decoder.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
// Project Headers (engine, readers)
1414
#include "engine/include/reader/binary_buffer.h"
15-
#include "engine/include/reader/ihex_reader.h"
15+
#include "engine/include/reader/reader.h"
1616

1717
// Project Headers (engine utilities)
1818
#include "engine/include/misc/bitmanip.h"
@@ -62,7 +62,7 @@ vmcu_instr_t* vmcu_decode_ihex(const char *hex_file, uint32_t *size, vmcu_model_
6262
vmcu_instr_t *result;
6363
vmcu_binary_buffer_t *bb;
6464

65-
if((bb = vmcu_read_ihex(hex_file, size)) == NULL)
65+
if((bb = vmcu_read_format(VMCU_FMT_IHEX, hex_file, size)) == NULL)
6666
return NULL;
6767

6868
if((result = decode_binary_buffer(bb, size)) == NULL)
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,11 @@
77
#include <stdbool.h>
88

99
// Project Headers (engine, readers)
10-
#include "engine/include/reader/ihex_reader.h"
10+
#include "engine/include/reader/format/ihex.h"
1111
#include "engine/include/reader/binary_buffer.h"
1212

1313
// Project Headers (engine utilities)
1414
#include "engine/include/misc/filemanip.h"
15-
#include "engine/include/misc/bitmanip.h"
1615
#include "engine/include/misc/stringmanip.h"
1716

1817
#define RECORD 8

engine/src/reader/reader.c

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/* Format Reader Implementation */
2+
3+
// C Headers
4+
#include <stddef.h>
5+
6+
// Project Headers (engine)
7+
#include "engine/include/reader/reader.h"
8+
9+
// Project Headers (engine, formats)
10+
#include "engine/include/reader/format/ihex.h"
11+
12+
vmcu_binary_buffer_t* vmcu_read_format(const VMCU_FMT fmt, const char *file, uint32_t *size) {
13+
14+
vmcu_binary_buffer_t *bb;
15+
16+
switch(fmt) {
17+
18+
case VMCU_FMT_IHEX: bb = vmcu_read_ihex(file, size); break;
19+
default: bb = NULL; break;
20+
}
21+
22+
return bb;
23+
}

0 commit comments

Comments
 (0)