доработка. изменение 51 команды
This commit is contained in:
@@ -550,43 +550,6 @@ void rcv_command(void)
|
||||
tx_msg.cmd_len = (ports_amount << 2) + 3;
|
||||
}
|
||||
break;
|
||||
case 51:
|
||||
//-----------------------------------------------------------
|
||||
// КОМАНДА №51
|
||||
// ЧТЕНИЕ МАССИВА ИЗ FLASH
|
||||
//-----------------------------------------------------------
|
||||
|
||||
cmd_buf[0] = rx_msg.cmd_code; // - код команды
|
||||
bytes_amount = rx_msg.rx_buf[9] + (rx_msg.rx_buf[10] << 8);
|
||||
|
||||
// Проверка размера принятого буфера
|
||||
if( rx_msg.length < (8))
|
||||
{
|
||||
// Размер принятого пакета меньше чем долно быть
|
||||
// Установить ошибку
|
||||
// КОД = 2
|
||||
cmd_buf[1] = ERR_SIZE;
|
||||
|
||||
// Установить размер буфера = 2
|
||||
tx_msg.cmd_len = 2;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
// Установить ВЫПОЛНЕНО
|
||||
cmd_buf[1] = NO_ERROR;
|
||||
// Колличество записаных байт
|
||||
cmd_buf[2] = rx_msg.rx_buf[7];
|
||||
cmd_buf[3] = rx_msg.rx_buf[8] << 8;
|
||||
cmd_buf[4] = rx_msg.rx_buf[9];
|
||||
cmd_buf[5] = rx_msg.rx_buf[10] << 8;
|
||||
uint16_t flash_addr = rx_msg.rx_buf[7] + (rx_msg.rx_buf[8] << 8);
|
||||
uint16_t numofwords = (bytes_amount/4)+((bytes_amount%4)!=0);
|
||||
Flash_Read_Data(FLASH_BASE_WR + flash_addr, (uint32_t *)&cmd_buf[6], numofwords);
|
||||
// Установить размер буфера
|
||||
tx_msg.cmd_len = 6 + bytes_amount;
|
||||
}
|
||||
break;
|
||||
case 55:
|
||||
//-----------------------------------------------------------
|
||||
// КОМАНДА №55
|
||||
@@ -623,6 +586,48 @@ void rcv_command(void)
|
||||
tx_msg.cmd_len = 2;
|
||||
}
|
||||
break;
|
||||
case 56:
|
||||
//-----------------------------------------------------------
|
||||
// КОМАНДА №56
|
||||
// ЧТЕНИЕ МАССИВА ИЗ FLASH
|
||||
//-----------------------------------------------------------
|
||||
|
||||
cmd_buf[0] = rx_msg.cmd_code; // - код команды
|
||||
// Проверка размера принятого буфера
|
||||
if( rx_msg.length < (8))
|
||||
{
|
||||
// Размер принятого пакета меньше чем долно быть
|
||||
// Установить ошибку
|
||||
// КОД = 2
|
||||
cmd_buf[1] = ERR_SIZE;
|
||||
|
||||
// Установить размер буфера = 2
|
||||
tx_msg.cmd_len = 2;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
uint32_t sector = FLASH_BASE_WR;
|
||||
unsigned char flash_sector = rx_msg.rx_buf[7];
|
||||
if (flash_sector == 1) sector = FLASH_BASE_EMS_B0;
|
||||
if (flash_sector == 2) sector = FLASH_BASE_EMS_B1;
|
||||
bytes_amount = rx_msg.rx_buf[10] + (rx_msg.rx_buf[11] << 8);
|
||||
|
||||
// Установить ВЫПОЛНЕНО
|
||||
cmd_buf[1] = NO_ERROR;
|
||||
// Колличество записаных байт
|
||||
cmd_buf[2] = rx_msg.rx_buf[7];
|
||||
cmd_buf[3] = rx_msg.rx_buf[8];
|
||||
cmd_buf[4] = rx_msg.rx_buf[9] << 8;
|
||||
cmd_buf[5] = rx_msg.rx_buf[10];
|
||||
cmd_buf[6] = rx_msg.rx_buf[11] << 8;
|
||||
uint16_t flash_addr = rx_msg.rx_buf[8] + (rx_msg.rx_buf[9] << 8);
|
||||
uint16_t numofwords = (bytes_amount/4)+((bytes_amount%4)!=0);
|
||||
Flash_Read_Data(sector + flash_addr, (uint32_t *)&cmd_buf[7], numofwords);
|
||||
// Установить размер буфера
|
||||
tx_msg.cmd_len = 7 + bytes_amount;
|
||||
}
|
||||
break;
|
||||
case 60:
|
||||
//-----------------------------------------------------------
|
||||
// КОМАНДА №60
|
||||
|
||||
@@ -91,7 +91,6 @@ uint16_t set_status(unsigned char *buf, uint32_t pribor)
|
||||
uint16_t set_status_prd(unsigned char *buf)
|
||||
{
|
||||
uint16_t ports_data, i;
|
||||
buf[6] = 31;
|
||||
buf[7] = 0;
|
||||
ports_data = read_isa(BASE_ADDR_EMS_G);
|
||||
buf[8] = 0;
|
||||
@@ -105,23 +104,41 @@ uint16_t set_status_prd(unsigned char *buf)
|
||||
if( ports_data != 0xFFFF ) buf[8] = set_bit(buf[8], 2, 1);
|
||||
ports_data = read_isa(BASE_ADDR_UKP1);
|
||||
if( ports_data != 0xFFFF ) buf[8] = set_bit(buf[8], 3, 1);
|
||||
for (i = 1; i <14; i++)
|
||||
|
||||
for (uint16_t i = 1; i <14; i++)
|
||||
{
|
||||
write_isa( BASE_ADDR_EMS_G + 0xC, i );
|
||||
ports_data = read_isa( BASE_ADDR_EMS_G + 0xE );
|
||||
buf[9+(i-1)*2] = ports_data & 0xFF;
|
||||
buf[10+(i-1)*2] = ports_data >> 8;
|
||||
buf[9 + (i - 1) * 2] = ports_data & 0xFF;
|
||||
buf[10 + (i -1) * 2] = ports_data >> 8;
|
||||
}
|
||||
|
||||
ports_data = read_isa( BASE_ADDR_UG + 0xC );
|
||||
buf[31] = ports_data & 0xFF;
|
||||
buf[32] = ports_data >> 8;
|
||||
buf[35] = ports_data & 0xFF;
|
||||
buf[36] = ports_data >> 8;
|
||||
ports_data = read_isa( BASE_ADDR_UG + 0xE );
|
||||
buf[33] = ports_data & 0xFF;
|
||||
buf[34] = ports_data >> 8;
|
||||
buf[37] = ports_data & 0xFF;
|
||||
buf[38] = ports_data >> 8;
|
||||
|
||||
ports_data = 0x55AA;
|
||||
//BASE_ADDR_UKP0
|
||||
for (uint16_t i = 0; i <8; i++)
|
||||
{
|
||||
|
||||
buf[39 + i * 2] = ports_data & 0xFF;
|
||||
buf[40 + i * 2] = ports_data >> 8;
|
||||
}
|
||||
|
||||
//BASE_ADDR_UKP1
|
||||
for (uint16_t i = 0; i <8; i++)
|
||||
{
|
||||
buf[55 + i * 2] = ports_data & 0xFF;
|
||||
buf[56 + i * 2] = ports_data >> 8;
|
||||
}
|
||||
|
||||
pribor_type = PRIBOR_TYPE_PRD;
|
||||
|
||||
return 33;
|
||||
buf[6] = 63;
|
||||
return buf[6] + 2;
|
||||
}
|
||||
|
||||
uint16_t set_status_uf(unsigned char *buf)
|
||||
|
||||
Reference in New Issue
Block a user