diff options
-rw-r--r-- | clunet.c | 8 |
1 files changed, 5 insertions, 3 deletions
@@ -235,10 +235,12 @@ clunet_send(const uint8_t address, const uint8_t prio, const uint8_t command, co clunetSendingDataLength = size + (CLUNET_OFFSET_DATA + 1); // TODO: может возникнуть ситуация, что мы прервав собственную передачу, будем вынуждены ожидать линию, которую освободили выше - // TODO: если пакет принимается размером больше, чем приемный буфер, то clunetReadingState = 0 - запустится передача, что приведет к конфликту + // TODO: если пакет принимается размером больше, чем приемный буфер, либо более редких других ситуациях (когда нет инициализации на линии), то clunetReadingState = 0 - запустится передача, + // что приведет либо к разрешимому конфликту и стадии ожидания линии или прервет чужую передачу даже с максимальным приоритетом + // придется делать проверку на конфликт в процедуре чтения по внешнему прерыванию - /* Если ничего не принимаем или принимаем, но от самого себя, то немедленно запускаем передачу, данные подготовлены */ - if (!clunetReadingState || clunetSendingState) // Исправить!!! + /* Если ничего не принимаем, то немедленно запускаем передачу, данные подготовлены */ + if (!clunetReadingState) clunet_start_send(); /* Иначе ожидаем линию */ else |