|
9 | 9 | #define DB_LOCK() osMutexAcquire(ulDatabase_mutex, osWaitForever) |
10 | 10 | #define DB_FREE() osMutexRelease(ulDatabase_mutex) |
11 | 11 |
|
| 12 | +union TypeHolder { |
| 13 | + uint8_t u8; |
| 14 | + int8_t i8; |
| 15 | + uint16_t u16; |
| 16 | + int16_t i16; |
| 17 | + uint32_t u32; |
| 18 | + int32_t i32; |
| 19 | + float f; |
| 20 | +}; |
| 21 | + |
12 | 22 | static osMutexId_t ulDatabase_mutex; |
13 | 23 | StaticSemaphore_t *ulDatabase_mutex_cb; |
14 | 24 |
|
@@ -336,21 +346,55 @@ bool ulDatabase_reset(uint16_t id) |
336 | 346 | if (p == NULL) |
337 | 347 | return false; |
338 | 348 |
|
| 349 | + union TypeHolder new_value; |
| 350 | + |
339 | 351 | DB_LOCK(); |
340 | 352 |
|
341 | 353 | switch (p->type) { |
342 | 354 | case UINT8: |
| 355 | + new_value.u8 = (uint8_t) p->defaultValue; |
| 356 | + break; |
343 | 357 | case INT8: |
344 | | - memcpy(&(db.dataArray[p->offset]), &(p->defaultValue), 1); |
| 358 | + new_value.i8 = (int8_t) p->defaultValue; |
345 | 359 | break; |
346 | 360 | case UINT16: |
| 361 | + new_value.u16 = (uint16_t) p->defaultValue; |
| 362 | + break; |
347 | 363 | case INT16: |
348 | | - memcpy(&(db.dataArray[p->offset]), &(p->defaultValue), 2); |
| 364 | + new_value.i16 = (int16_t) p->defaultValue; |
349 | 365 | break; |
350 | 366 | case UINT32: |
| 367 | + new_value.u32 = (uint32_t) p->defaultValue; |
| 368 | + break; |
351 | 369 | case INT32: |
| 370 | + new_value.i32 = (int32_t) p->defaultValue; |
| 371 | + break; |
| 372 | + case FLOAT: |
| 373 | + new_value.f = (float) p->defaultValue; |
| 374 | + break; |
| 375 | + } |
| 376 | + |
| 377 | + switch (p->type) { |
| 378 | + case UINT8: |
| 379 | + memcpy(&(db.dataArray[p->offset]), &(new_value.u8), sizeof(new_value.u8)); |
| 380 | + break; |
| 381 | + case INT8: |
| 382 | + memcpy(&(db.dataArray[p->offset]), &(new_value.i8), sizeof(new_value.u8)); |
| 383 | + break; |
| 384 | + case UINT16: |
| 385 | + memcpy(&(db.dataArray[p->offset]), &(new_value.u16), sizeof(new_value.u16)); |
| 386 | + break; |
| 387 | + case INT16: |
| 388 | + memcpy(&(db.dataArray[p->offset]), &(new_value.i16), sizeof(new_value.i16)); |
| 389 | + break; |
| 390 | + case UINT32: |
| 391 | + memcpy(&(db.dataArray[p->offset]), &(new_value.u32), sizeof(new_value.u32)); |
| 392 | + break; |
| 393 | + case INT32: |
| 394 | + memcpy(&(db.dataArray[p->offset]), &(new_value.i32), sizeof(new_value.i32)); |
| 395 | + break; |
352 | 396 | case FLOAT: |
353 | | - memcpy(&(db.dataArray[p->offset]), &(p->defaultValue), 4); |
| 397 | + memcpy(&(db.dataArray[p->offset]), &(new_value.f), sizeof(new_value.f)); |
354 | 398 | break; |
355 | 399 | } |
356 | 400 |
|
|
0 commit comments