Repository for import to local machine

Dependencies:   DMBasicGUI DMSupport

GCHeatControl.cpp

Committer:
jmitc91516
Date:
2016-01-13
Revision:
0:47c880c1463d
Child:
1:a5258871b33d

File content as of revision 0:47c880c1463d:

#include "GCHeatControl.h"

extern void EasyGUIDebugPrint(char *stuffToPrint, short X, short Y);

    
GCHeatControl::GCHeatControl(USBDeviceConnected* newUsbDevice, USBHostGC* newUsbHostGC)
{
    usbDevice = newUsbDevice;
    usbHostGC = newUsbHostGC;

#ifdef DEBUG_TEST
    heatIsOn = false;
#endif
}

bool GCHeatControl::IsHeatOn(void)
{
#ifdef DEBUG_TEST
    return heatIsOn;
#else
    while(usbHostGC->ExecutingSetDeviceReport()) {}

    char response[50];
    usbHostGC->SetDeviceReport(usbDevice, "QHTS", response);
    // We expect a response like this: "QHTS0000" for off, "QHTS0001" for on
    
    char dbg[100];
    sprintf(dbg, "QHTS returned %s", response);
    EasyGUIDebugPrint(dbg, 100, 100);
    
    return (response[7] != '0');
#endif
}
        
bool GCHeatControl::TurnHeatOn(void)
{
#ifdef DEBUG_TEST
    if(heatIsOn) {
        // Heat is already on
        return false;
    }
    
    heatIsOn = true;
    
    return true;
#else    
    while(usbHostGC->ExecutingSetDeviceReport()) {}

    if(IsHeatOn()) {
        // Heat is already on
        return false;
    }
    
    char response[50];
    usbHostGC->SetDeviceReport(usbDevice, "CHON", response);
    // We expect a response like this: "DACK" for success, "DNAK" for failure

    char dbg[100];
    sprintf(dbg, "CHON returned %s", response);
    EasyGUIDebugPrint(dbg, 100, 150);
    
    return (response[1] == 'A');
#endif
}
    
bool GCHeatControl::TurnHeatOff(void)
{
#ifdef DEBUG_TEST
    if(!heatIsOn) {
        // Heat is already off
        return false;
    }
    
    heatIsOn = false;
    
    return true;
#else    
    while(usbHostGC->ExecutingSetDeviceReport()) {}

    if(!IsHeatOn()) {
        // Heat is already off
        return false;
    }
    
    char response[50];
    usbHostGC->SetDeviceReport(usbDevice, "CHOF", response);
    // We expect a response like this: "DACK" for success, "DNAK" for failure
    
    char dbg[100];
    sprintf(dbg, "CHOF returned %s", response);
    EasyGUIDebugPrint(dbg, 100, 200);
    
    return (response[1] == 'A');
#endif
}