diff options
author | Sergey V. DUDANOV <sergey.dudanov@gmail.com> | 2016-07-07 22:16:48 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-07-07 22:16:48 +0300 |
commit | 15935fde024da9f88078806fdf978c5bdcbb0370 (patch) | |
tree | 8c24ed4d3a6fae5cb1df33bb2de97cdd12449c89 | |
parent | 56ab81e941318fd49f538ef26de958c1c82f2409 (diff) |
Update clunet.c
Нашел немного проблем в реализации, подробнее в комментариях TODO
-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 |