Добрый день. Есть некоторая задача: работать на МК с модулем, скажем блутус, который имеет свой набор команд (запросы, подтверждения выполнения команды, идентификаторы событий). Кроме всего прочего нужно общаться и с другой периферией(иногда аналогичной ) и выполнять прочие действия. Суть проблемы: как правильно организовать обработку асинхронных процессов, различных по длительности и при вариативности результата этих действий? Реализовывал несколько конечных автоматов, в которые входил раз за проход, проверял что изменилось, за нек промежуток времени, реагировал, менял состояния и переходил к следующему конечному автомату. Теперь этого не хватает. Потому как при работе с модулем накапливается огромное количество всевозможных состояний, различных переходов от состояния к состоянию и приходится реагировать на события, которые накапливаются параллельно (скажем опрос окружения, работа с несколькими конечными точками), отдавать запросы и ожидать подтверждений в несколько этапов. Как-то возможностей конечного автомата--уже мало (слишком много состояний и большая вариативность возможных вариантов развития), а про организацию простых операционных систем--пока не имею представления. Возможно кто-то натолкнет на правильные идеи? На что нужно обратить внимание при организации подобных программ?
|