Bläddra i källkod

add config logic

Juraj Ďuďák 2 år sedan
förälder
incheckning
cc26f9a846
6 ändrade filer med 36 tillägg och 5 borttagningar
  1. 1 0
      Inc/nbus_cmd.h
  2. 20 2
      Inc/nbus_config.h.default
  3. 3 1
      Inc/nbus_memory.h
  4. 2 0
      Inc/nbus_types.h
  5. 7 2
      Src/nbus_memory.c
  6. 3 0
      Src/nbus_slave_module_unicast.c

+ 1 - 0
Inc/nbus_cmd.h

@@ -37,6 +37,7 @@
 #define INFO_MODULE_UUID		0xE3
 #define INFO_MODULE_HW			0xE4
 #define INFO_MODULE_FW			0xE5	// ?
+#define INFO_MODULE_MEMORY_ID	0xE6
 
 #define PARAM_SENSOR_SAMPLERATE	0x41
 #define PARAM_SENSOR_LPF		0x42

+ 20 - 2
Inc/nbus_config.h.default

@@ -20,8 +20,26 @@
 
 // MUST BE 8 BYTE LONG
 #define MODULE_NAME "prototyp"
-// MUST BE 3 BYTE LONG
-#define MODULE_TYPE "FSR"
+
+// Do not modify
+
+#define MODULE_FSR 	1		
+#define MODULE_IMU 	2
+
+#define MODULE MODULE_FSR
+
+#if MODULE == MODULE_FSR
+	// MUST BE 3 BYTE LONG
+	#define MODULE_TYPE "FSR"
+	#define MODULE_INIT_IP_ADC
+#endif
+
+
+#if MODULE == MODULE_IMU
+	// MUST BE 3 BYTE LONG
+	#define MODULE_TYPE "IMU"
+	#define MODULE_INIT_IP_SPI
+#endif
 
 
 

+ 3 - 1
Inc/nbus_memory.h

@@ -23,6 +23,7 @@ typedef struct{
 	 */
 	uint8_t (*write_word)(uint32_t data, uint16_t address);
 	uint8_t (*write_half_word)(uint16_t, uint16_t);
+	uint8_t (*read_id)(uint8_t*);
 } nBus_MemoryDriver;
 
 
@@ -36,6 +37,7 @@ typedef enum{
 typedef struct {
 	uint8_t (*storeParam)(uint8_t sensor_index, uint8_t param_name, uint32_t param_value);
 	uint32_t (*getParam)(uint8_t sensor_index, uint8_t param_name);
+	uint8_t (*getId)(uint8_t*);
 }nBus_memoryInterface_t;
 
 
@@ -48,7 +50,7 @@ void nbus_memory_init(nBus_MemoryDriver *driver);
 nBus_memoryState_t nbus_store_param(uint8_t sensor_index, uint8_t param_name, uint32_t param_value);
 uint32_t nbus_read_param(uint8_t sensor_index, uint8_t param_name);
 
-
+uint8_t nbus_memory_id(uint8_t*);
 
 
 #endif /* MODULES_NBUS_INC_NBUS_MEMORY_H_ */

+ 2 - 0
Inc/nbus_types.h

@@ -89,7 +89,9 @@ typedef struct {
      */
     McuPin_typeDef* led;
 
+#if MODULE_MASTER == 1
     RTC_HandleTypeDef *rtc;
+#endif
 
 #if USE_SW_485 == 1
     /**

+ 7 - 2
Src/nbus_memory.c

@@ -11,7 +11,8 @@ nBus_MemoryDriver *memoryImplementation;
 
 nBus_memoryInterface_t memory_itnerface = {
 		nbus_store_param,
-		nbus_read_param
+		nbus_read_param,
+		nbus_memory_id
 };
 
 nBus_memoryInterface_t *getnbusMemoryInterface(void){
@@ -28,5 +29,9 @@ nBus_memoryState_t nbus_store_param(uint8_t sensor_index, uint8_t param_name, ui
 }
 uint32_t nbus_read_param(uint8_t sensor_index, uint8_t param_name){
 	uint16_t adr = sensor_index + param_name;
-	return memoryImplementation->read_word(adr);;
+	return memoryImplementation->read_word(adr);
+}
+
+uint8_t nbus_memory_id(uint8_t* data) {
+	return memoryImplementation->read_id(data);
 }

+ 3 - 0
Src/nbus_slave_module_unicast.c

@@ -90,6 +90,9 @@ void nbus_slave_unicastToModuleGet(nBus_TypeDef *nbus){
 			nbus->tx_buffer[6] = VERSION_HW[1];
 			nbus->tx_length += 3;
 			break;
+		case INFO_MODULE_MEMORY_ID:
+			uint8_t n = nbus->memoryInterface->getId(&nbus->tx_buffer[4]);
+			nbus->tx_length += n;
 		}
 	}
 	break;