Dmitry Kovalev
/
LG2
fork
Fork of LG by
Diff: Command.c
- Revision:
- 129:406995a91322
- Parent:
- 128:1e4675a36c93
- Child:
- 131:ef5973569c02
--- a/Command.c Mon Apr 11 11:04:34 2016 +0000 +++ b/Command.c Tue Apr 12 11:10:49 2016 +0000 @@ -12,16 +12,44 @@ unsigned int Consol=123; unsigned int TempParam=1; unsigned int CountParam=0; -/* -void exec_CMD(void) //r. === процедура окончательной дешифрации и исполнения команды + +void CMD_M_Param_R(void) { - unsigned int Comand_code; - - //rx_buf_copy = 1; //r. предустанов флага копирования приемного буфера - - Comand_code = (rcv_buf[2] & 0xFF) << 8; - PC_Comand = Comand_code | (rcv_buf[3] & 0xFF); //e. save it in the memory for echo-transmission //r. сохранить его в памяти для обратной передачи -}*/ + unsigned int NP; + unsigned int Param; + BuffTemp[0] = Gyro.SOC_Out; + BuffTemp[1] = Gyro.My_Addres; + + NP = BuffTemp[3]; + + Param = GyroP.Array[NP]; + + BuffTemp[2] =(Param >> 8) & 0xff;//старший байт требуемого параметра + BuffTemp[3] =(Param >> 0) & 0xff;//младший байт требуемого параметра + + Check(BuffTemp, 6); + WriteConN (BuffTemp,6); +} +void CMD_M_Param_W(void) +{ + unsigned int NP; + unsigned int Param; + + NP = BuffTemp[3]; + Param = (BuffTemp[4]<<8); + Param |= BuffTemp[5]; + + GyroP.Array[NP] = Param; + + + BuffTemp[0] = Gyro.SOC_Out; + BuffTemp[1] = Gyro.My_Addres; + BuffTemp[2] = Gyro.CMD_In; + BuffTemp[3] = 0x00;//старший байт требуемого параметра + + Check(BuffTemp, 6); + WriteConN (BuffTemp,6); +} void CMD_Maintenance(void) { @@ -201,11 +229,8 @@ { unsigned int Temp; Gyro.EXT_Latch=0; - WriteCon("0"); BuffTemp[ 0] = Gyro.SOC_Out; - WriteCon("1"); BuffTemp[ 1] = Gyro.My_Addres; - Temp = Gyro.CuruAngle; Gyro.CuruAngle = 0; @@ -552,7 +577,14 @@ break; } } - + BuffTemp[0] = Gyro.SOC_Out; //DD + BuffTemp[1] = Gyro.My_Addres; //00 + BuffTemp[2] = Gyro.CMD_In; //D8 + BuffTemp[3] = A<<4; + BuffTemp[4] = 0x0; + BuffTemp[5] = 0x0; + Check(BuffTemp, CRC_N); + WriteConN (BuffTemp,CRC_N); } void CMD_M_Control_D9()///чтение регистров управления @@ -658,12 +690,23 @@ lengf=8; break; - case 0xA5://DeviceMode + case 0xE9://DeviceMode lengf=6; CRC_N=8; break; + case 0xE8://DeviceMode + lengf=6; + CRC_N=8; + break; + + case 0xA5://DeviceMode + + lengf=6; + CRC_N=8; + break; + case 0xDD://m_rate lengf=6; CRC_N=44; @@ -761,10 +804,12 @@ ReadCon1(BuffTemp); switch(Gyro.CMD_In) { Rate_Flag=0; + case 0x99: Gyro.ModeOut=0; CMD_Maintenance(); break; + case 0xA0: TempParam=(BuffTemp[3]) & 0x90; if (TempParam==Delta_500) CMD_Delta_500Hz(); @@ -772,15 +817,27 @@ else if (TempParam==PDelta_500) { Gyro.ModeOut=3; Gyro.Delta500_Event=0; WriteCon("Delta500"); } else if (TempParam==PDelta_EXT) { Gyro.ModeOut=4; Gyro.DeltaEXT_Event=0; WriteCon("deltaEXT"); } break; + case 0xD8: CMD_M_Control_D8(); break; + + case 0xE9://чтение параметров + CMD_M_Param_R(); + break; + + case 0xE8://запись параметра + CMD_M_Param_W(); + break; + case 0xD9: CMD_M_Control_D9(); break; + case 0x0A: CMD_M_Stymul(); break; + case 0xDD: TempParam=(BuffTemp[3]) & 0x9f; if (TempParam == Rate1) { CMD_Rate(); WriteCon("Rate11");} @@ -788,9 +845,11 @@ else if (TempParam == PRate1) { Gyro.ModeOut=1; Gyro.Rate1_Event=0; WriteCon("Rate12");} else if (TempParam == PRate2) { Gyro.ModeOut=2; Gyro.Rate2_Event=0; WriteCon("Rate22");} break; + case 0xE4: CMD_M_vib(); break; + case 0xE6: Gph_W(); break;