diff options
| author | Avi Levkovich <avi@twine-s.com> | 2020-12-17 14:35:00 +0200 |
|---|---|---|
| committer | Avi Levkovich <avi@twine-s.com> | 2020-12-17 14:35:00 +0200 |
| commit | a84ca31290b18ef2a9ec4c197d86573bb13adb03 (patch) | |
| tree | 5dfae44a32d1575a74e8bfb5276bda8bfa056078 /Software/Embedded_SW/Embedded/Modules | |
| parent | e1ee0eafc192d6df9fa41a2749d016473d7563f4 (diff) | |
| download | Tango-a84ca31290b18ef2a9ec4c197d86573bb13adb03.tar.gz Tango-a84ca31290b18ef2a9ec4c197d86573bb13adb03.zip | |
Add BTSR (scripts full suport) + use NonBlocking in Shinko Uart3_Receive
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
| -rw-r--r-- | Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c | 15 | ||||
| -rw-r--r-- | Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_I2C.c | 184 |
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 284a43e41..096876cf1 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c @@ -51,6 +51,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 @@ -88,7 +89,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); |
