GlobLib
HAL and API libraries for MCUs and hardware.
flashWrite.c
Go to the documentation of this file.
1 
17 #include "flashWrite.h"
18 
19 static void (*out)(uint8_t,uint16_t);
20 static uint8_t (*in)(uint16_t);
21 
22 void FLASHWRITE_setOutput(void (*out_fun)(uint8_t,uint16_t)){
23 
24  out = out_fun;
25  return;
26 }
27 
28 void FLASHWRITE_setInput(uint8_t (*in_fun)(uint16_t)){
29 
30  in = in_fun;
31  return;
32 }
33 
35 
36  if(out == NULL){
37 
38  return NULL;
39  }
40  return out;
41 }
42 
43 u8_fp_u16 FLASHWRITE_getInput(void){
44 
45  if(in == NULL){
46 
47  return NULL;
48  }
49  return in;
50 }
51 
52 uint16_t FLASHWRITE_write_u8(uint8_t data, uint16_t address){
53 
54  out((uint8_t)data,address++);
55  return address;
56 }
57 
58 uint16_t FLASHWRITE_read_u8(uint8_t *data, uint16_t address){
59 
60  *data = in(address++);
61  return address;
62 }
63 
64 uint16_t FLASHWRITE_write_8(int8_t data, uint16_t address){
65 
66  out(data,address++);
67  return address;
68 }
69 
70 uint16_t FLASHWRITE_read_8(int8_t *data, uint16_t address){
71 
72  *data = (int8_t)in(address++);
73  return address;
74 }
75 
76 uint16_t FLASHWRITE_write_c(char data, uint16_t address){
77 
78  out(data,address++);
79  return address;
80 }
81 
82 uint16_t FLASHWRITE_read_c(char *data, uint16_t address){
83 
84  *data = in(address++);
85  return address;
86 }
87 
88 uint16_t FLASHWRITE_write_u16(uint16_t data, uint16_t address){
89 
90  out((uint8_t)(data>>8),address++);
91  out((uint8_t)data,address++);
92  return address;
93 }
94 
95 uint16_t FLASHWRITE_read_u16(uint16_t *data, uint16_t address){
96 
97  *data = (uint16_t)(in(address++)<<8);
98  *data |= in(address++);
99  return address;
100 }
101 
102 uint16_t FLASHWRITE_write_16(int16_t data, uint16_t address){
103 
104  out((uint8_t)(data>>8),address++);
105  out((uint8_t)(data),address++);
106  return address;
107 }
108 
109 uint16_t FLASHWRITE_read_16(int16_t *data, uint16_t address){
110 
111  *data = (uint16_t)(in(address++)<<8);
112  *data |= in(address++);
113  return address;
114 }
115 uint16_t FLASHWRITE_write_u32(uint32_t data, uint16_t address){
116 
117  out((uint8_t)(data>>24),address++);
118  out((uint8_t)(data>>16),address++);
119  out((uint8_t)(data>>8),address++);
120  out((uint8_t)data,address++);
121  return address;
122 }
123 
124 uint16_t FLASHWRITE_read_u32(uint32_t *data, uint16_t address){
125 
126  *data = (uint32_t)(in(address++)<<24);
127  *data |= (uint32_t)(in(address++)<<16);
128  *data |= (uint32_t)(in(address++)<<8);
129  *data |= in(address++);
130  return address;
131 }
132 
133 uint16_t FLASHWRITE_write_32(int32_t data, uint16_t address){
134 
135  out((uint8_t)(data>>24),address++);
136  out((uint8_t)(data>>16),address++);
137  out((uint8_t)(data>>8),address++);
138  out((uint8_t)(data),address++);
139  return address;
140 }
141 
142 uint16_t FLASHWRITE_read_32(int32_t *data, uint16_t address){
143 
144  *data = (uint32_t)(in(address++)<<24);
145  *data |= (uint32_t)(in(address++)<<16);
146  *data |= (uint32_t)(in(address++)<<8);
147  *data |= in(address++);
148  return address;
149 }
150 
151 uint16_t FLASHWRITE_write_float(float f_data, uint16_t address){
152 
153  int32_t data;
154  for(int i = 0; i<MAX_DEC;i++){
155 
156  f_data *= 10;
157  }
158 
159  data = (int32_t)f_data;
160 
161  out((uint8_t)(data>>24),address++);
162  out((uint8_t)(data>>16),address++);
163  out((uint8_t)(data>>8),address++);
164  out((uint8_t)(data),address++);
165  return address;
166 }
167 
168 uint16_t FLASHWRITE_read_float(float *f_data, uint16_t address){
169 
170 
171  int32_t data;
172  data = (uint32_t)(in(address++)<<24);
173  data |= (uint32_t)(in(address++)<<16);
174  data |= (uint32_t)(in(address++)<<8);
175  data |= in(address++);
176 
177  *f_data = data;
178 
179  for(int i = 0; i<MAX_DEC;i++){
180 
181  *f_data /= 10;
182  }
183 
184  return address;
185 }
uint16_t FLASHWRITE_write_float(float f_data, uint16_t address)
Write a float to address given.
Definition: flashWrite.c:151
uint16_t FLASHWRITE_write_c(char data, uint16_t address)
Write a char to address given.
Definition: flashWrite.c:76
uint16_t FLASHWRITE_write_16(int16_t data, uint16_t address)
Write a signed 16 bit integer to address give.
Definition: flashWrite.c:102
uint16_t FLASHWRITE_write_u16(uint16_t data, uint16_t address)
Write a unsigned 16 bit integer to address given.
Definition: flashWrite.c:88
void FLASHWRITE_setInput(uint8_t(*in_fun)(uint16_t))
Set the target input stream for flash_get functions.
Definition: flashWrite.c:28
uint16_t FLASHWRITE_read_8(int8_t *data, uint16_t address)
Read a signed 8 bit integer from address given.
Definition: flashWrite.c:70
v_fp_u8_u16 FLASHWRITE_getOutput(void)
Get the current target output stream.
Definition: flashWrite.c:34
Header file for flashWrite library.
uint16_t FLASHWRITE_write_32(int32_t data, uint16_t address)
Write a signed 32 bit integer to address given.
Definition: flashWrite.c:133
void(* v_fp_u8_u16)(uint8_t, uint16_t)
Function pointer typedef for void function with uint8_t parameter.
Definition: flashWrite.h:50
uint16_t FLASHWRITE_write_8(int8_t data, uint16_t address)
Write a signed 8 bit integer to address given.
Definition: flashWrite.c:64
uint16_t FLASHWRITE_read_32(int32_t *data, uint16_t address)
Read a signed 32 bit integer from address given.
Definition: flashWrite.c:142
void FLASHWRITE_setOutput(void(*out_fun)(uint8_t, uint16_t))
Set the target output stream for flash_put functions.
Definition: flashWrite.c:22
uint16_t FLASHWRITE_read_u16(uint16_t *data, uint16_t address)
Read a unsigned 16 bit integer from address give.
Definition: flashWrite.c:95
u8_fp_u16 FLASHWRITE_getInput(void)
Get the current target input stream.
Definition: flashWrite.c:43
uint16_t FLASHWRITE_read_16(int16_t *data, uint16_t address)
Read a signed 16 bit integer from address give.
Definition: flashWrite.c:109
uint16_t FLASHWRITE_write_u8(uint8_t data, uint16_t address)
Write a unsigned 8 bit integer to address given.
Definition: flashWrite.c:52
#define MAX_DEC
Maximum number of decimal places a float will contain.
Definition: flashWrite.h:85
uint16_t FLASHWRITE_write_u32(uint32_t data, uint16_t address)
Write a unsigned 32 bit integer to address given.
Definition: flashWrite.c:115
uint16_t FLASHWRITE_read_u32(uint32_t *data, uint16_t address)
Read a unsigned 32 bit integer from address given.
Definition: flashWrite.c:124
uint16_t FLASHWRITE_read_u8(uint8_t *data, uint16_t address)
Read a unsigned 8 bit integer from address given.
Definition: flashWrite.c:58
uint16_t FLASHWRITE_read_float(float *f_data, uint16_t address)
Read a float from address given.
Definition: flashWrite.c:168
uint16_t FLASHWRITE_read_c(char *data, uint16_t address)
Read a char from address give.
Definition: flashWrite.c:82