car chassis

Dependencies:   Servo mbed-rtos mbed

driver.cpp

Committer:
mariob
Date:
2015-08-31
Revision:
1:79b1ee0f97ef
Child:
2:7dfc8dd6aab3

File content as of revision 1:79b1ee0f97ef:

#include "car_config.hpp"
#include "mbed.h"
#include "rtos.h"

extern can_cmd_driver_t can_cmd_driver;
extern can_sts_driver_t can_sts_driver;

void init_driver ()
{
}


void thread_driver (void const *args)
{
    while(1) {
        //printf("DRIVER\r\n");
        if (can_cmd_driver.flag == CAN_FLAG_RECEIVED) {
            uint16 cmd = can_cmd_driver.payload.msg.cmd;
            //uint16 opt = can_cmd_driver.payload.msg.opt;
            uint32 data = can_cmd_driver.payload.msg.data;
            switch(cmd) {
            case CMD_ECHO:
                can_sts_driver.payload.msg.data = data;
                can_sts_driver.flag = CAN_FLAG_SEND;
                printf("ECHO %d\r\n", can_cmd_driver.payload.msg.data);
                break;
            default:
                //ignore it
                break;
            }
            can_cmd_driver.flag = CAN_FLAG_EMPTY;
        }
        Thread::wait(DRIVER_THREAD_PERIOD);
    }
}