|
|
@@ -10,7 +10,7 @@
|
|
|
nBus_MemoryDriver *memoryImplementation;
|
|
|
|
|
|
nBus_memoryInterface_t memory_itnerface = {
|
|
|
- nbus_store_param, nbus_read_param, nbus_is_param_active,
|
|
|
+ nbus_memory_store_param, nbus_memory_read_param, nbus_is_param_active,
|
|
|
nbus_read_header_data, nbus_memory_id, nbus_get_capacity};
|
|
|
nBus_memoryHeader_t memoryHeader;
|
|
|
|
|
|
@@ -18,6 +18,8 @@ nBus_memoryInterface_t *getnbusMemoryInterface(void) {
|
|
|
return &memory_itnerface;
|
|
|
}
|
|
|
|
|
|
+uint8_t memory_buffer[32];
|
|
|
+
|
|
|
void nbus_memory_init(nBus_MemoryDriver *driver) {
|
|
|
memoryImplementation = driver;
|
|
|
for (uint32_t i = 0; i < 64; i++) {
|
|
|
@@ -28,7 +30,27 @@ void nbus_memory_init(nBus_MemoryDriver *driver) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-nBus_memoryState_t nbus_store_param(uint8_t sensor_index, uint8_t param_name,
|
|
|
+uint8_t ubus_memory_write4B(uint32_t data, uint16_t adr) {
|
|
|
+ memory_buffer[0] = data>>24;
|
|
|
+ memory_buffer[1] = (data>>16) & 0xFF;
|
|
|
+ memory_buffer[2] = (data>>8) & 0xFF;
|
|
|
+ memory_buffer[3] = (data) & 0xFF;
|
|
|
+ return memoryImplementation->write_data(memory_buffer, adr, 4);
|
|
|
+}
|
|
|
+
|
|
|
+uint8_t ubus_memory_write2B(uint16_t data, uint16_t adr) {
|
|
|
+ memory_buffer[0] = (data>>8) & 0xFF;
|
|
|
+ memory_buffer[1] = (data) & 0xFF;
|
|
|
+ return memoryImplementation->write_data(memory_buffer, adr, 2);
|
|
|
+}
|
|
|
+
|
|
|
+uint8_t ubus_memory_write1B(uint8_t data, uint16_t adr) {
|
|
|
+ memory_buffer[0] = (data) & 0xFF;
|
|
|
+ return memoryImplementation->write_data(memory_buffer, adr, 1);
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+nBus_memoryState_t nbus_memory_store_param(uint8_t sensor_index, uint8_t param_name,
|
|
|
uint32_t param_value) {
|
|
|
if (param_name >= 16) {
|
|
|
return MEMORY_STORE_FAIL;
|
|
|
@@ -39,7 +61,7 @@ nBus_memoryState_t nbus_store_param(uint8_t sensor_index, uint8_t param_name,
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
- * Write information abou validity of parameter for sensor 'sensor_index'. 0 -
|
|
|
+ * Write information about validity of parameter for sensor 'sensor_index'. 0 -
|
|
|
* parameter not set, 0xAA - parameter is setted
|
|
|
*/
|
|
|
uint8_t address_offset = getParameterHeaderOffset(sensor_index, param_name);
|
|
|
@@ -58,14 +80,14 @@ nBus_memoryState_t nbus_store_param(uint8_t sensor_index, uint8_t param_name,
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
- memoryImplementation->write_byte(
|
|
|
+ ubus_memory_write1B(
|
|
|
*(uint8_t *)(&memoryHeader.params_map[address_offset]), sensor_index);
|
|
|
- return memoryImplementation->write_word(param_value, addr) == 0
|
|
|
+ return ubus_memory_write4B(param_value, addr) == 0
|
|
|
? MEMORY_STORE_OK
|
|
|
: MEMORY_STORE_FAIL;
|
|
|
}
|
|
|
|
|
|
-uint32_t nbus_read_param(uint8_t sensor_index, uint8_t param_name) {
|
|
|
+uint32_t nbus_memory_read_param(uint8_t sensor_index, uint8_t param_name) {
|
|
|
if (param_name >= 16) {
|
|
|
return ERROR_VALUE_I32;
|
|
|
}
|
|
|
@@ -123,8 +145,13 @@ uint8_t nbus_is_param_active(uint8_t sensor_index, uint8_t param_name) {
|
|
|
|
|
|
// TODO pouzit upravenu funkciu z drivera: DS28EC20_writeMem
|
|
|
void memory_params_format(void) {
|
|
|
- for (uint32_t adr = 0; adr < 64; adr += 4) {
|
|
|
- memoryImplementation->write_word(0x0, adr);
|
|
|
+ uint8_t empty_data[32] = {
|
|
|
+ 0,0,0,0,0,0,0,0,
|
|
|
+ 0,0,0,0,0,0,0,0,
|
|
|
+ 0,0,0,0,0,0,0,0,
|
|
|
+ 0,0,0,0,0,0,0,0};
|
|
|
+ for (uint32_t adr = 0; adr < 64; adr += 32) {
|
|
|
+ memoryImplementation->write_data(empty_data, adr, 32);
|
|
|
}
|
|
|
}
|
|
|
|