From eb129cb55a82f0239a2caf2add6bc1498651be0a Mon Sep 17 00:00:00 2001
From: "Michael D. M. Dryden" <mdryden@chem.utoronto.ca>
Date: Thu, 26 Nov 2015 10:32:09 -0500
Subject: [PATCH] Stores offset trimming for each gain resistor.

---
 DSTAT/src/config/conf_board.h |  8 +++++++-
 DSTAT/src/settings.c          | 38 +++++++++++++++++++++++++++++++++--
 DSTAT/src/settings.h          |  9 ++++++++-
 3 files changed, 51 insertions(+), 4 deletions(-)

diff --git a/DSTAT/src/config/conf_board.h b/DSTAT/src/config/conf_board.h
index 4fb468e..a57fbf6 100644
--- a/DSTAT/src/config/conf_board.h
+++ b/DSTAT/src/config/conf_board.h
@@ -16,6 +16,12 @@
 #define SETTINGS_MAX5443_OFFSET 0
 #define SETTINGS_TCS_ENABLED 0
 #define SETTINGS_TCS_CLEAR_THRESHOLD 10000U
-
+#define SETTINGS_R100_TRIM 0
+#define SETTINGS_R3k_TRIM 0
+#define SETTINGS_R30k_TRIM 0
+#define SETTINGS_R300k_TRIM 0
+#define SETTINGS_R3M_TRIM 0
+#define SETTINGS_R30M_TRIM 0
+#define SETTINGS_R100M_TRIM 0
 
 #endif // CONF_BOARD_H
diff --git a/DSTAT/src/settings.c b/DSTAT/src/settings.c
index 8b81a1d..b68b37c 100644
--- a/DSTAT/src/settings.c
+++ b/DSTAT/src/settings.c
@@ -24,7 +24,17 @@ void settings_handler(char command){
             break;
             
         case 'W': //Write new settings
-            scanf("%i%hhu%u", &settings.settings.max5443_offset, &settings.settings.tcs_enabled, &settings.settings.tcs_clear_threshold);
+            scanf("%i%hhu%u%i%i%i%i%i%i%i",
+                  &settings.settings.max5443_offset,
+                  &settings.settings.tcs_enabled,
+                  &settings.settings.tcs_clear_threshold,
+                  &settings.settings.r100_trim,
+                  &settings.settings.r3k_trim,
+                  &settings.settings.r30k_trim,
+                  &settings.settings.r300k_trim,
+                  &settings.settings.r3M_trim,
+                  &settings.settings.r30M_trim,
+                  &settings.settings.r100M_trim);
             settings_write_eeprom();
             break;
             
@@ -43,7 +53,24 @@ void settings_read_eeprom(void){
     printf("#INFO: max5443_offset = %u\n\r", settings.settings.max5443_offset);
     printf("#INFO: tls_enabled = %u\n\r", settings.settings.tcs_enabled);
     printf("#INFO: tls_clear_threshold = %u\n\r", settings.settings.tcs_clear_threshold);
-    printf("Smax5443_offset.%u:tcs_enabled.%u:tcs_clear_threshold.%u\n\r", settings.settings.max5443_offset, settings.settings.tcs_enabled, settings.settings.tcs_clear_threshold);
+    printf("#INFO: r100_trim = %i\n\r", settings.settings.r100_trim);
+    printf("#INFO: r3k_trim = %i\n\r", settings.settings.r3k_trim);
+    printf("#INFO: r30k_trim = %i\n\r", settings.settings.r30k_trim);
+    printf("#INFO: r300k_trim = %i\n\r", settings.settings.r300k_trim);
+    printf("#INFO: r3M_trim = %i\n\r", settings.settings.r3M_trim);
+    printf("#INFO: r30M_trim = %i\n\r", settings.settings.r30M_trim);
+    printf("#INFO: r100M_trim = %i\n\r", settings.settings.r100M_trim);
+    printf("Smax5443_offset.%u:tcs_enabled.%u:tcs_clear_threshold.%u:r100_trim.%i:r3k_trim.%i:r30k_trim.%i:r300k_trim.%i:r3M_trim.%i:r30M_trim.%i:r100M_trim.%i\n\r",
+           settings.settings.max5443_offset,
+           settings.settings.tcs_enabled,
+           settings.settings.tcs_clear_threshold,
+           settings.settings.r100_trim,
+           settings.settings.r3k_trim,
+           settings.settings.r30k_trim,
+           settings.settings.r300k_trim,
+           settings.settings.r3M_trim,
+           settings.settings.r30M_trim,
+           settings.settings.r100M_trim);
 }
 
 void settings_write_eeprom(void){
@@ -57,6 +84,13 @@ void settings_restore_defaults(void){
     settings.settings.max5443_offset = SETTINGS_MAX5443_OFFSET;
     settings.settings.tcs_enabled = SETTINGS_TCS_ENABLED;
     settings.settings.tcs_clear_threshold = SETTINGS_TCS_CLEAR_THRESHOLD;
+    settings.settings.r100_trim =  SETTINGS_R100_TRIM;
+    settings.settings.r3k_trim = SETTINGS_R3k_TRIM;
+    settings.settings.r30k_trim = SETTINGS_R30k_TRIM;
+    settings.settings.r300k_trim = SETTINGS_R300k_TRIM;
+    settings.settings.r3M_trim = SETTINGS_R3M_TRIM;
+    settings.settings.r30M_trim = SETTINGS_R30M_TRIM;
+    settings.settings.r100M_trim = SETTINGS_R100M_TRIM;
     
     settings_write_eeprom();
 }
diff --git a/DSTAT/src/settings.h b/DSTAT/src/settings.h
index 2c8ccbb..c63f014 100644
--- a/DSTAT/src/settings.h
+++ b/DSTAT/src/settings.h
@@ -22,11 +22,18 @@ struct settings_list { //Make sure this doesn't exceed 32 bytes
     int16_t max5443_offset;
     uint8_t tcs_enabled;
     uint16_t tcs_clear_threshold;
+    int16_t r100_trim;
+    int16_t r3k_trim;
+    int16_t r30k_trim;
+    int16_t r300k_trim;
+    int16_t r3M_trim;
+    int16_t r30M_trim;
+    int16_t r100M_trim; //20 bytes
 };
 
 union {
     struct settings_list settings;
-    char temp_char[EEPROM_PAGE_SIZE];
+    char temp_char[EEPROM_PAGE_SIZE]; //makes sure struct fills whole page
 } settings;
 
 void settings_handler(char command);
-- 
GitLab