Skip to content

PeterBozhko/AndroidTest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AndroidTest

Тестовое задание по Android

Данное тестовое задание представляет из себя мини-сервер эмулирующий работу квадрокоптера. Его поведение схоже с реальным дроном.

Сервер написан на языке Kotlin с использованием сборщика Gradle. Проблем с запуском возникнуть не должно.

Функционал сервера:

  1. Web-сервер с номером прошивки дрона по адресу https://<your_ip>/info
  2. TCP-сервер (порт 8888) для первоначального соединения
  3. UDP-сервер по отправке изображения в формате png
  4. Сервер/клиент MAVLink* на основе UDP (порт 8001)

*MAVLink - специальный протокол для общения между наземными станциями и дронами. Ознакомиться с ним и его документацией можно на официальном сайте https://mavlink.io/en/

На сервере релизован микросервис Heartbeat (по документации), по которому отслеживается подключение приложения к дрону.

Также реализована отправка сообщений типа LOCAL_POSITION_NED.

Сервер умеет принимать сообщения типа HEARTBEAT и RC_CHANNELS_OVERRIDE

Логика работы сервера

  1. Ожидание подключения по TCP
  2. После подключения запускается отправка картинок по UDP на такой же порт, что и в TCP соединении. Например, приложение создало TCP соединение на своём порте 39875, тогда изображения будут отправлятся на UDP-порт с номером 39875.
  3. Запускается прием/отправка сообщений MAVLink
  4. При превышении ожидания сообщения HEARTBEAT больше 5 секунд сервер закрывается и переходит в состояние 0

Задание :

Написать приложение по управлению квадрокоптером используя функционал сервера (желательно использовать архитектурный паттерн MVVM).

Для этого:

  1. Подключиться к серверу (по TCP и UDP) (реализовать возможность смены IP из приложения);
  2. Реализовать отправку и прием сообщения типа MAVLink;
  3. Реализовать микросервис HEARTBEAT;
  4. Реализовать два стика управления, передающих дрону сообщения типа RC_CHANNELS_OVERRIDE c каналами: 1- throttle, 2-yaw, 3- pitch, 4- roll; каждая из переменных имеет диапазон [1000,2000]; controller

Если все сделать верно - сервер в консоль будет логгировать пришедшие сообщения.

  1. Реализовать приём сообщения типа LOCAL_POSITION_NED и выводить полученные данные на экран;
  2. Принимать изображения от сервера и выводить на экран;
  3. По адрессу https://<your_ip>/info принять массив [...,...] где ... номера версий прошивок дрона.
  4. Сделать билд apk для Android 6.0+
  5. как доп. сделать возможность закрытия и повторного открытия TCP соединения при работающем MAVLink соединении

Удачи :)

About

Тестовое задание по Android

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages