aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules/Stubs_Handler
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules/Stubs_Handler')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c15
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_I2C.c184
2 files changed, 170 insertions, 29 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
index 73282fa97..659a308db 100644
--- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
@@ -52,6 +52,7 @@
#include "StateMachines/Initialization/PowerOffSequence.h"
#include "StateMachines/Initialization/PowerIdle.h"
+#include "Drivers/Uart_Comm/BTSR/BTSR.h"
extern HeadBoardTempSensConfigStruc HeadTempSensConfig[MAX_HEAD_CARD_TEMP_SENS_ID];
extern float NumberOfRotationPerPassage; // how many rotations per spool passage
@@ -90,7 +91,19 @@ void Stub_ProgressRequest(MessageContainer* requestContainer)
uint8_t ReadBackReg[1];
-
+ if(request->amount == 0xFEED)//BTSR Feeder
+ {
+ if((request->delay) >> 4 == 0)
+ {
+ response.progress = BTSR_Auto_Identify(request->delay & 0xF);
+ }
+ else
+ {
+ response.progress = BTSR_Set_Parmeters(request->delay & 0xF,(request->delay & 0xFF00)>>8,(request->delay & 0xFF0000)>>16);
+ }
+ response.has_progress = true;
+ }
+ else
if(request->amount == 0xacc1e)
{
response.progress = IDS_Cleaning_Move_Actuators();
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_I2C.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_I2C.c
index e749b41ec..d07a4de59 100644
--- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_I2C.c
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_I2C.c
@@ -28,6 +28,12 @@
#include "Stub_Status.h"
#include "drivers/I2C_Communication/I2C.h"
+
+#include "Drivers/Uart_Comm/BTSR/BTSR.h"
+
+static uint8_t CODE_STRING;//BTSR ID needed to check the checksum, in the response for FUNCTION_STRING = 0x33/0x1C
+static uint8_t Function_Code;//needed to check the checksum, in the response for FUNCTION_STRING = 0x33/0x1C
+
void Stub_I2CRequest(MessageContainer* requestContainer)
{
@@ -91,33 +97,134 @@ void Stub_I2CWriteBytesRequest(MessageContainer* requestContainer)
response.slaveaddress = request->slaveaddress;
response.has_slaveaddress = true;
- //response.readbyte = I2C_control(request->i2cid, request->slaveaddress, request->readorwrite,request->bytetowrite );
- //response.has_readbyte= true;
+// if(request->i2cid != 0xFEED)//BTSR FEEDR (Script identification)
+// {
+//
+// //response.readbyte = I2C_control(request->i2cid, request->slaveaddress, request->readorwrite,request->bytetowrite );
+// //response.has_readbyte= true;
+//
+// //--------------------------
+//
+// //response.readbyte = I2C_control(request->i2cid, request->slaveaddress, request->readorwrite,request->bytestwrite[0]);
+// //response.has_readbyte= true;
+//
+// uint8_t I2C_W_buf[256] = {0},i;
+//
+// for(i = 0; i < request->n_bytestwrite;i++)
+// {
+// I2C_W_buf[i] = (uint8_t)(request->bytestwrite[i] & 0xff);
+// }
+//
+// //response.readbytes = I2C_W_buf;
+// //response.n_readbytes = request->n_bytestwrite;
+//
+// //-------------------------------
+//
+//
+// //----------------------
+//
+// status = I2C_Write/*Write_I2C*/(request->i2cid, request->slaveaddress, I2C_W_buf, request->n_bytestwrite);
+//
+// }
+// else
+// {
+// //--------------- RS485 BTSR FEEDR ---------------
+//
+//
+// uint8_t BTSR_TX_Buff[Max_BTSR_TX_Bytes] = {0},i;
+//
+// for(i = 0; i < request->n_bytestwrite;i++)
+// {
+// BTSR_TX_Buff[i] = (uint8_t)(request->bytestwrite[i] & 0xff);
+// }
+//
+// CODE_STRING = BTSR_TX_Buff[0];
+// Function_Code = BTSR_TX_Buff[1];
+//
+// if(request->slaveaddress)//Auto_Calc_CheckSum
+// {
+// BTSR_Calculate_CheckSum(BTSR_TX_Buff,request->n_bytestwrite);
+// BTSR_Send_Buf(BTSR_TX_Buff, request->n_bytestwrite + 2);//2 bytes of CheckSum
+// }
+// else
+// {
+// BTSR_Send_Buf(BTSR_TX_Buff, request->n_bytestwrite);
+// }
+//
+// Task_sleep (10);
+// BTSR_RECEIVE_Buf(BTSR_RX_Buff, 0);//size not in use (need to ignore the returned error)
+//
+//
+// }
+ if((request->i2cid != 0xFEED) && (request->i2cid != 0xFEED3ADD))//BTSR FEEDR (Script identification)
+ {
- //--------------------------
+ //response.readbyte = I2C_control(request->i2cid, request->slaveaddress, request->readorwrite,request->bytetowrite );
+ //response.has_readbyte= true;
- //response.readbyte = I2C_control(request->i2cid, request->slaveaddress, request->readorwrite,request->bytestwrite[0]);
- //response.has_readbyte= true;
+ //--------------------------
- uint8_t I2C_W_buf[256] = {0},i;
+ //response.readbyte = I2C_control(request->i2cid, request->slaveaddress, request->readorwrite,request->bytestwrite[0]);
+ //response.has_readbyte= true;
+
+ uint8_t I2C_W_buf[256] = {0},i;
+
+ for(i = 0; i < request->n_bytestwrite;i++)
+ {
+ I2C_W_buf[i] = (uint8_t)(request->bytestwrite[i] & 0xff);
+ }
+
+ //response.readbytes = I2C_W_buf;
+ //response.n_readbytes = request->n_bytestwrite;
+
+ //-------------------------------
+
+
+ //----------------------
+
+ status = I2C_Write/*Write_I2C*/(request->i2cid, request->slaveaddress, I2C_W_buf, request->n_bytestwrite);
- for(i = 0; i < request->n_bytestwrite;i++)
- {
- I2C_W_buf[i] = (uint8_t)(request->bytestwrite[i] & 0xff);
}
+ else
+ {
+ //--------------- RS485 BTSR FEEDR ---------------
- //response.readbytes = I2C_W_buf;
- //response.n_readbytes = request->n_bytestwrite;
- //-------------------------------
+ uint8_t BTSR_TX_Buff[Max_BTSR_TX_Bytes] = {0},i;
+ for(i = 0; i < request->n_bytestwrite;i++)
+ {
+ BTSR_TX_Buff[i] = (uint8_t)(request->bytestwrite[i] & 0xff);
+ }
- //----------------------
+ CODE_STRING = BTSR_TX_Buff[0];
- status = I2C_Write/*Write_I2C*/(request->i2cid, request->slaveaddress, I2C_W_buf, request->n_bytestwrite);
+ if(request->i2cid == 0xFEED3ADD)//Only for commands with 3 bytes with Address 1 (0x06/0xFD)
+ {
+ Function_Code = BTSR_TX_Buff[4];
- //--------------------------
+ BTSR_Send_Buf_3xADD1(BTSR_TX_Buff, request->n_bytestwrite);
+ }
+ else
+ {
+ Function_Code = BTSR_TX_Buff[1];
+
+ if(request->slaveaddress)//Auto_Calc_CheckSum
+ {
+ BTSR_Calculate_CheckSum(BTSR_TX_Buff,request->n_bytestwrite);
+ BTSR_Send_Buf(BTSR_TX_Buff, request->n_bytestwrite + 2);//2 bytes of CheckSum
+ }
+ else
+ {
+ BTSR_Send_Buf(BTSR_TX_Buff, request->n_bytestwrite);
+ }
+ }
+ //Task_sleep (10);
+ //BTSR_RECEIVE_Buf(BTSR_RX_Buff, 0);//size not in use (need to ignore the returned error)
+
+
+ }
status_response(status,&response.status, &response.statusword ,&response.has_statusword);
@@ -150,27 +257,48 @@ void Stub_I2CReadBytesRequest(MessageContainer* requestContainer)
response.slaveaddress = request->slaveaddress;
response.has_slaveaddress = true;
- status = I2C_Read/*Read_I2C*/(request->i2cid, request->slaveaddress, I2C_R_buf, request->numberofbytestoread);
+ if(request->i2cid != 0xFEED)//BTSR FEEDR (Script identification)
+ {
- //response.readbyte = I2C_control(request->i2cid, request->slaveaddress, request->readorwrite,request->bytetowrite );
- //response.has_readbyte= true;
+ status = I2C_Read/*Read_I2C*/(request->i2cid, request->slaveaddress, I2C_R_buf, request->numberofbytestoread);
- //--------------------------
+ //response.readbyte = I2C_control(request->i2cid, request->slaveaddress, request->readorwrite,request->bytetowrite );
+ //response.has_readbyte= true;
- //response.readbyte = I2C_control(request->i2cid, request->slaveaddress, request->readorwrite,request->bytestwrite[0]);
- //response.has_readbyte= true;
+ //--------------------------
- //uint32_t I2C_W_buf[256] = {0},i;
+ //response.readbyte = I2C_control(request->i2cid, request->slaveaddress, request->readorwrite,request->bytestwrite[0]);
+ //response.has_readbyte= true;
- for(i = 0; i < request->numberofbytestoread;i++)
- {
- I2C_R32_buf[i]= (uint32_t)I2C_R_buf[i] ;
+ //uint32_t I2C_W_buf[256] = {0},i;
+
+ for(i = 0; i < request->numberofbytestoread;i++)
+ {
+ I2C_R32_buf[i]= (uint32_t)I2C_R_buf[i] ;
+ }
+
+
+ response.readbytes = I2C_R32_buf;
+ response.n_readbytes = request->numberofbytestoread;
+
+ //-------------------------------
}
+ else
+ {
+ //--------------- RS485 BTSR FEEDR ---------------
+ for(i = 0; i < request->numberofbytestoread - request->slaveaddress;i++)
+ {
+ I2C_R32_buf[i]= (uint32_t)BTSR_RX_Buff[i] ;
+ }
- response.readbytes = I2C_R32_buf;
- response.n_readbytes = request->numberofbytestoread;
+ if(((request->numberofbytestoread- request->slaveaddress) > 2) && (request->slaveaddress))//Verify_Received_CheckSum
+ {
+ I2C_R32_buf[i] = Check_Received_CheckSum(CODE_STRING, Function_Code, BTSR_RX_Buff, (request->numberofbytestoread - request->slaveaddress));//use the next byte to return the checksum status
+ }
+ response.readbytes = I2C_R32_buf;
+ response.n_readbytes = request->numberofbytestoread;
+ }
- //-------------------------------
status_response(status,&response.status, &response.statusword ,&response.has_statusword);