瀏覽代碼

nové nBUS api

Juraj Ďuďák 9 月之前
父節點
當前提交
07e4de2d83
共有 4 個文件被更改,包括 40 次插入33 次删除
  1. 8 8
      Core/Inc/app_imu.h
  2. 1 1
      Core/Src/app_adc.c
  3. 30 23
      Core/Src/app_imu.cpp
  4. 1 1
      Modules/nbus

+ 8 - 8
Core/Inc/app_imu.h

@@ -22,25 +22,25 @@ extern "C"
 nBusAppInterface_t *getImuDriver();
 void mcu_spi_init(void *hw_interface, void *hw_config);
 void mcu_spi_reset();
-void mcu_spi_start();
-void mcu_spi_stop();
+nBus_statusType_t mcu_spi_start();
+nBus_statusType_t mcu_spi_stop();
 nBus_sensorType_t mcu_spi_getType(uint8_t sensor_index);
-uint8_t mcu_spi_getSensorCount();
+nBus_sensorCount_t mcu_spi_getSensorCount();
 uint8_t mcu_spi_getData(uint8_t sensor_index, uint8_t *data);
-uint8_t mcu_spi_setData(uint8_t *data);
+nBus_statusType_t mcu_spi_setData(uint8_t *data, uint8_t count, uint8_t *response);
 int32_t mcu_spi_getParam(uint8_t sensor_index, nBus_param_t param);
 uint8_t mcu_spi_hasParam(uint8_t sensor_index, nBus_param_t param);
-nBus_param_t mcu_spi_setParam(uint8_t sensor_index, nBus_param_t param, int32_t value);
+nBus_statusType_t mcu_spi_setParam(uint8_t sensor_index, nBus_param_t param, int32_t value);
 void mcu_spi_readData(void);
 /**
  * Run calibration procedure.
  * @param subslaveIndex index of sublave (specific sensor) to run calibration procedure. Can be: 0 - all sensors, 1, 2 - sensor index
- * @param calibrationParamsNum number of input calibration values for sensors
- * @param calibrationParams array of calibration parameters
+ * @param calibrationParamsNum number of input calibration values for sensors  ===>  REMOVED
+ * @param calibrationParams array of calibration parameters			===> REMOVED
  * @note calibrationParams  needs to be updated, because it is only uint8_t array for now
  * @return 1 - success, 0 - sensor not found (when subslaveIndex != 0)
  */
-uint8_t mcu_spi_calibrate(uint8_t subslaveIndex, uint8_t calibrationParamsNum, uint8_t *calibrationParams);
+nBus_statusType_t mcu_spi_calibrate(uint8_t subslaveIndex);
 //uint8_t mcu_spi_store(void);
 
 #ifdef __cplusplus

+ 1 - 1
Core/Src/app_adc.c

@@ -62,7 +62,7 @@ nBus_sensorType_t mcu_adc_getType(uint8_t sensor_index){
 	if (sensor_index > mcu_adc_getSensorCount())
 		return TYPE_UNKNOWN;
 
-	return TYPE_PRESSURE;
+	return TYPE_PRESSURE_GAUGE;
 }
 
 

+ 30 - 23
Core/Src/app_imu.cpp

@@ -27,6 +27,9 @@ nBusAppInterface_t mcu_spi_driver = {
 	  mcu_spi_readData,
 	  NULL, //mcu_spi_store,
 	  mcu_spi_calibrate,
+	  NULL, //getSensorFormat
+	  NULL, //find
+	  NULL //deviceReady
 };
 
 
@@ -151,12 +154,14 @@ void mcu_spi_reset(){
 	sensor->Reset();
 }
 
-void mcu_spi_start(){
+nBus_statusType_t mcu_spi_start(){
 	sensor->Start();
+	return STATUS_SUCCESS;
 }
 
-void mcu_spi_stop(){
+nBus_statusType_t mcu_spi_stop(){
 	sensor->Stop();
+	return STATUS_SUCCESS;
 }
 
 void mcu_spi_readData(void){
@@ -165,7 +170,8 @@ void mcu_spi_readData(void){
 
 nBus_sensorType_t mcu_spi_getType(uint8_t sensor_index){
 
-	if (sensor_index > mcu_spi_getSensorCount()) {
+	nBus_sensorCount_t sc = mcu_spi_getSensorCount();
+	if (sensor_index > sc.read_only_count) {
 		return TYPE_UNKNOWN;
 	}
 
@@ -181,8 +187,9 @@ nBus_sensorType_t mcu_spi_getType(uint8_t sensor_index){
 }
 
 
-uint8_t mcu_spi_getSensorCount(){
-	return 2;
+nBus_sensorCount_t mcu_spi_getSensorCount(){
+	nBus_sensorCount_t sc = {2,0};
+	return sc;
 }
 
 
@@ -206,8 +213,8 @@ uint8_t mcu_spi_getData(uint8_t sensor_index, uint8_t *data){
 	return 7;
 }
 
-uint8_t mcu_spi_setData(uint8_t *data){
-	return 1; // ILLEGAL_FUNCTION;
+nBus_statusType_t mcu_spi_setData(uint8_t *data, uint8_t count, uint8_t *response){
+	return STATUS_FAIL;
 }
 
 int32_t mcu_spi_getParam(uint8_t sensor_index, nBus_param_t param){
@@ -267,10 +274,10 @@ uint8_t mcu_spi_hasParam(uint8_t sensor_index, nBus_param_t param){
 	return 0;
 }
 
-nBus_param_t mcu_spi_setParam(uint8_t sensor_index, nBus_param_t param, int32_t value) {
+nBus_statusType_t mcu_spi_setParam(uint8_t sensor_index, nBus_param_t param, int32_t value) {
 	// to module
 	if(sensor_index == 0) {
-		return PARAM_NONE;
+		return STATUS_NOT_SUPPORTED;
 	}
 
 	if(sensor_index == 1) {
@@ -281,7 +288,7 @@ nBus_param_t mcu_spi_setParam(uint8_t sensor_index, nBus_param_t param, int32_t
 			if(sr != ACCEL_samplerate_None) {
 				sensor->accSensor->SetSampleRate(sr);
 			} else {
-				return PARAM_NONE;
+				return STATUS_NOT_SUPPORTED;
 			}
 
 		}
@@ -292,7 +299,7 @@ nBus_param_t mcu_spi_setParam(uint8_t sensor_index, nBus_param_t param, int32_t
 			if(fs != ACCEL_FS_NoneG) {
 				sensor->accSensor->SetRange(fs);
 			} else {
-				return PARAM_NONE;
+				return STATUS_NOT_SUPPORTED;
 			}
 
 		}
@@ -303,13 +310,13 @@ nBus_param_t mcu_spi_setParam(uint8_t sensor_index, nBus_param_t param, int32_t
 			if(lpf != ACCEL_lpf_None) {
 				sensor->accSensor->SetLowPassFilter(lpf);
 			} else {
-				return PARAM_NONE;
+				return STATUS_NOT_SUPPORTED;
 			}
 
 		}
 			break;
 		default:
-			return PARAM_NONE;
+			return STATUS_NOT_SUPPORTED;
 		}
 	}
 
@@ -321,7 +328,7 @@ nBus_param_t mcu_spi_setParam(uint8_t sensor_index, nBus_param_t param, int32_t
 			if(sr != GYRO_samplerate_None) {
 				sensor->gyroSensor->SetSampleRate(sr);
 			} else {
-				return PARAM_NONE;
+				return STATUS_NOT_SUPPORTED;
 			}
 
 		}
@@ -332,7 +339,7 @@ nBus_param_t mcu_spi_setParam(uint8_t sensor_index, nBus_param_t param, int32_t
 			if(fs != GYRO_FS_None) {
 				sensor->gyroSensor->SetRange(fs);
 			} else {
-				return PARAM_NONE;
+				return STATUS_NOT_SUPPORTED;
 			}
 
 		}
@@ -343,36 +350,36 @@ nBus_param_t mcu_spi_setParam(uint8_t sensor_index, nBus_param_t param, int32_t
 			if(lpf != GYRO_lpf_None) {
 				sensor->gyroSensor->SetLowPassFilter(lpf);
 			} else {
-				return PARAM_NONE;
+				return STATUS_NOT_SUPPORTED;
 			}
 
 		}
 			break;
 		default:
-			return PARAM_NONE;
+			return STATUS_NOT_SUPPORTED;
 		}
 	}
 
-	return param;
+	return STATUS_SUCCESS;
 
 }
 
 /**
  * @param sebslaveIndex sensorAccIndex, sensorGyroIndex, sensorAll
  */
-uint8_t mcu_spi_calibrate(uint8_t subslaveIndex, uint8_t calibrationParamsNum, uint8_t *calibrationParams){
+nBus_statusType_t mcu_spi_calibrate(uint8_t subslaveIndex){
 
 	uint8_t wasReady = sensor->IsReady();
 	sensor->Stop();
-	uint8_t success = 0;
+	nBus_statusType_t success = STATUS_SUCCESS;
 	if (subslaveIndex == (uint8_t) sensorAccIndex){
 		sensor->accSensor->Calibrate();
-		success = 1;
+		success = STATUS_FAIL;
 	}
 
 	if (subslaveIndex == (uint8_t) sensorGyroIndex){
 		sensor->gyroSensor->Calibrate();
-		success = 1;
+		success = STATUS_FAIL;
 	}
 
 //	if (subslaveIndex == sensorMagIndex){
@@ -383,7 +390,7 @@ uint8_t mcu_spi_calibrate(uint8_t subslaveIndex, uint8_t calibrationParamsNum, u
 		sensor->accSensor->Calibrate();
 		sensor->gyroSensor->Calibrate();
 //		sensor->magSensor->Calibrate();
-		success = 1;
+		success = STATUS_FAIL;
 	}
 
 	if (wasReady !=0 ) {

+ 1 - 1
Modules/nbus

@@ -1 +1 @@
-Subproject commit 2929bc71e7592287c7e557cb13dd4eaaeb801019
+Subproject commit d3679a74e92509b5e3c048853291235cd68fbbea