/*
 * Copyright (c) 2017 FH Dortmund and others
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Description:
 *    Hono interaction task for Rover - header file
 *
 * Authors:
 *    M. Ozcelikors,            R.Hottger
 *    <mozcelikors@gmail.com>   <robert.hoettger@fh-dortmund.de>
 *
 */

#ifndef TASKS_HONO_INTERACTION_TASK_H_
#define TASKS_HONO_INTERACTION_TASK_H_

#include <stdio.h>
#include <stdlib.h>



void *Hono_Interaction_Task (void * arg);



#endif /* TASKS_HONO_INTERACTION_TASK_H_ */
