Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ClusterM/clunet.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey V. DUDANOV <sergey.dudanov@gmail.com>2016-07-07 22:16:48 +0300
committerGitHub <noreply@github.com>2016-07-07 22:16:48 +0300
commit15935fde024da9f88078806fdf978c5bdcbb0370 (patch)
tree8c24ed4d3a6fae5cb1df33bb2de97cdd12449c89
parent56ab81e941318fd49f538ef26de958c1c82f2409 (diff)
Update clunet.c
Нашел немного проблем в реализации, подробнее в комментариях TODO
-rw-r--r--clunet.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/clunet.c b/clunet.c
index b23251e..a035900 100644
--- a/clunet.c
+++ b/clunet.c
@@ -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