Тестовое задание по Android
Данное тестовое задание представляет из себя мини-сервер эмулирующий работу квадрокоптера. Его поведение схоже с реальным дроном.
Сервер написан на языке Kotlin с использованием сборщика Gradle. Проблем с запуском возникнуть не должно.
- Web-сервер с номером прошивки дрона по адресу https://<your_ip>/info
- TCP-сервер (порт 8888) для первоначального соединения
- UDP-сервер по отправке изображения в формате png
- Сервер/клиент MAVLink* на основе UDP (порт 8001)
*MAVLink - специальный протокол для общения между наземными станциями и дронами. Ознакомиться с ним и его документацией можно на официальном сайте https://mavlink.io/en/
На сервере релизован микросервис Heartbeat (по документации), по которому отслеживается подключение приложения к дрону.
Также реализована отправка сообщений типа LOCAL_POSITION_NED.
Сервер умеет принимать сообщения типа HEARTBEAT и RC_CHANNELS_OVERRIDE
- Ожидание подключения по TCP
- После подключения запускается отправка картинок по UDP на такой же порт, что и в TCP соединении. Например, приложение создало TCP соединение на своём порте 39875, тогда изображения будут отправлятся на UDP-порт с номером 39875.
- Запускается прием/отправка сообщений MAVLink
- При превышении ожидания сообщения HEARTBEAT больше 5 секунд сервер закрывается и переходит в состояние 0
Написать приложение по управлению квадрокоптером используя функционал сервера (желательно использовать архитектурный паттерн MVVM).
Для этого:
- Подключиться к серверу (по TCP и UDP) (реализовать возможность смены IP из приложения);
- Реализовать отправку и прием сообщения типа MAVLink;
- Реализовать микросервис HEARTBEAT;
- Реализовать два стика управления, передающих дрону сообщения типа RC_CHANNELS_OVERRIDE c каналами: 1- throttle, 2-yaw, 3- pitch, 4- roll; каждая из переменных имеет диапазон [1000,2000];
Если все сделать верно - сервер в консоль будет логгировать пришедшие сообщения.
- Реализовать приём сообщения типа LOCAL_POSITION_NED и выводить полученные данные на экран;
- Принимать изображения от сервера и выводить на экран;
- По адрессу https://<your_ip>/info принять массив [...,...] где ... номера версий прошивок дрона.
- Сделать билд apk для Android 6.0+
- как доп. сделать возможность закрытия и повторного открытия TCP соединения при работающем MAVLink соединении
Удачи :)
