Library to control Dodge LX (83.3k) CAN devices

Dependents:   DodgeRadioEmulatorv30

radioEmulator.h

Committer:
rtgree01
Date:
2013-01-25
Revision:
2:ade5ba8a9d37
Parent:
0:ab4c4438577e

File content as of revision 2:ade5ba8a9d37:

#ifndef RADIOEMULATOR_H
#define RADIOEMULATOR_H

#include "mbed.h"
#include "Eth.h"

#include "RadioState.h"


class RadioEmulator : public SocketReceiver
{
public:
    RadioEmulator(CAN *can, DigitalOut *rs, InterruptIn *irq, bool wdTO);
    ~RadioEmulator() {};
    
    void Operate(void);
    
    virtual void ReceivedData(int status, int size, char *data);
    
private:

    CAN *CANDevice;
    CANMessage can_MsgRx;
    DigitalOut *can_RS;
    InterruptIn *canIRQ;    
    UDPSock *HostSock;
    
    RadioState status;
    char siriusdata[512];
    int prevSWC;

//    void readInitFile();
//    void writeInitFile();

    void PowerUp(void);
    void PowerDown();
    
    enum {standalone, slave} opMode;

    void readCANbus(void);

    void SendOnMsg();
    void SendEVICMsg();
    void SendRadioModeMsg();
    void SendStereoSettingsMsg();
    void SendHostMessages();
    
    void ChangeSiriusStation(int station, bool turn_on);
    
    void StandaloneSWI();
    
    void ParseCANMessage(CANMessage can_MsgRx);
    void ReadSiriusText(char *data);    

    Ticker CANBusTicker;
    bool writeCANFlag;
    void WriteCANMessages();
    std::list<CANMessage> hostMessages;
    
    Ticker statusTicker;
    bool statusFlag;
    void SendStatusToHost();

    Ticker CANTimeout;
    bool CANTimeoutFlag;
    void CheckCANTimeout(void);
    void CANActivity(void);
    bool ReceivedCANMsg;
    bool needToParseCANMessage;
    int powerUpIRQCounter;
    bool sleeping;
    bool needToWakeUp;

    Ticker HostTimeout;
    bool hostTimeoutFlag;
    void CheckHostTimeout(void);
    bool ReceivedHostMsg;
    
    
    static char unlock[6];
    static char lock[6];
    static char trunk[6];
};

#endif