Merge remote-tracking branch 'MaD_CaT/master'
This commit is contained in:
@@ -134,15 +134,12 @@ func set_wordi(buf: PackedByteArray, index: int, val: int) -> void:
|
||||
buf[index + 1] = (val >> 8) & 0xff
|
||||
|
||||
|
||||
## Устанавливает бит в соответствии с маской
|
||||
## [param bits] - Прежние значения бит
|
||||
## [param index] - Индекс нового значения бита
|
||||
## [param val] - Новое значение бита
|
||||
## [param mask] - Маска изменяемых бит
|
||||
func set_bit(bits, index, val, mask = 0xfffffffffffffff):
|
||||
"""
|
||||
:param bits: прежние значения
|
||||
:param index: индекс бита
|
||||
:param val: новое значение бита
|
||||
:param mask:
|
||||
:return:
|
||||
мастер
|
||||
"""
|
||||
bits &= mask
|
||||
if val:
|
||||
bits |= 1 << index
|
||||
@@ -151,12 +148,9 @@ func set_bit(bits, index, val, mask = 0xfffffffffffffff):
|
||||
return (bits & mask)
|
||||
|
||||
|
||||
## Устанавливает биты в соответствии с маской
|
||||
## [param v] - Прежние значения бит
|
||||
## [param a] - Новые значения бит
|
||||
## [param m] - Маска изменяемых бит
|
||||
func set_bits(v, a, m):
|
||||
"""
|
||||
Устанавливает биты в соответствии с маской
|
||||
:param v: Прежние значения бит
|
||||
:param a: Новые значения бит
|
||||
:param m: Маска изменяемых бит
|
||||
:return: Изменённые значения бит
|
||||
"""
|
||||
return v & a & (~m) | (~v) & a & m | v & a & m | v & (~a) & (~m)
|
||||
return (~m) & v | a & m
|
||||
|
||||
@@ -75,7 +75,6 @@ LOAD_KEMS, WRITE_FLASH_END}
|
||||
|
||||
# Отправка команды на запись или чтение порта
|
||||
func on_wr_device(dev_number):
|
||||
print_debug([id_board, dev_number])
|
||||
if (state == WR_DEV_NUM_W) or (state == WR_DEV_NUM_R):
|
||||
unit_ems.send_isa(unit_ems.CmdCode.WRITE_ISA, [base_addr_isa + 2, dev_number])
|
||||
elif state == WRITE:
|
||||
@@ -183,3 +182,10 @@ LOAD_KEMS, WRITE_FLASH_END}
|
||||
else:
|
||||
state = WR_DEV_NUM_W
|
||||
on_wr_device(cur_dev_num)
|
||||
|
||||
func set_connection(o_dev, i_dev, val):
|
||||
cur_dev_num = o_dev
|
||||
if check_dev_number():
|
||||
cur_dev.set_dot(i_dev, val)
|
||||
state = WR_DEV_NUM_W
|
||||
on_wr_device(cur_dev_num)
|
||||
|
||||
@@ -7,6 +7,10 @@ const STATUS_OFFSET = { # Смещение статуса, ключ
|
||||
1: 26,
|
||||
2: 52 }
|
||||
|
||||
const KEMS_BOARD_NAME = 'КЭМС-Б'
|
||||
const EMS1_BOARD_NAME = 'ЭМС-Б1'
|
||||
const EMS2_BOARD_NAME = 'ЭМС-Б2'
|
||||
|
||||
## Таблица с данными для входов, первое значение - индекс устройства в ячейке КЭМС.
|
||||
const INPUT_KEMS = [
|
||||
[1 ,['УИЗП №1', 'Х7', '0.00', '0.00']],
|
||||
|
||||
@@ -10,7 +10,7 @@ class InDev:
|
||||
var state: int ## Состояние входа.
|
||||
var freq: int ## Предполагаемая частота на которой работает комплекс.
|
||||
var ports_data: Dictionary ## Словарь состояния портов устройства.
|
||||
var tbl_row_id: int ## Индекс устройства в таблице выходов.
|
||||
var tbl_row_id: int ## Индекс устройства в таблице.
|
||||
var out_dots: Array ## Список выходных устройств в порядке, как в таблице и точки матрицы.
|
||||
var connect_devs: Dictionary ## Список присоединённых устройств.
|
||||
var board: String ## Плата в которой находится устройство.
|
||||
@@ -64,9 +64,9 @@ class OutDev extends InDev:
|
||||
for i in range(yemsconsts.NUM_INPUT):
|
||||
btns_state[i+1] = bool((data >> i) & 1)
|
||||
|
||||
func set_dot(i_dev):
|
||||
func set_dot(i_dev, val):
|
||||
if btns_state.has(i_dev):
|
||||
btns_state[i_dev] = not btns_state[i_dev]
|
||||
btns_state[i_dev] = val
|
||||
var data = 0
|
||||
for i in range(yemsconsts.NUM_INPUT):
|
||||
data = data | (int(btns_state[i+1]) << i)
|
||||
|
||||
Reference in New Issue
Block a user