// © RiceMotion ( Robert Carl Rice ) 2012-2016 - All rights reserved


// This software makes use of tools and libraries obtained from open source projects or released for

// use by relevant hardware manufactures. However, this software is NOT a part of any open source project.

// It is released only on a "need to know" basis for beta testers of the "RiceCNC Interpolation Engine".

// Recipents of this source code must respect the confidential nature of this software and prevent any

// distribution that could result in counterfeit copies of the "RiceCNC Interpolation Engine".


// © RiceMotion ( Robert Carl Rice ) 2012-2016 - All rights reserved

#include <SetCoolant.h>

#include <Machine.h>

#include <Coolants.h>

#include <MachineCommands.h>


const char SetCoolant::myName[] =

     "SetCoolant";


const char*

     SetCoolant::name() {


     return

          myName; };


SetCoolant::SetCoolant( char* data ) {

     int    number;

     sscanf( data,

          "%d",

          &number );


     outputNumber  = abs( number ) - 1;

     on            = number >= 0;

     coolant       = NULL; };


bool

     SetCoolant::execute(

          Machine* machine ) {


    if (     outputNumber >= 0

          &&     outputNumber < AuxOutputs )

          coolant   = machine->coolants[ outputNumber ];


    if ( coolant )

          coolant->setCoolantOn( on );


    return

          true; };

  

void

     SetCoolant::report(

          Machine*     machine,

          String*          msgPtr ) {


    if ( coolant ) {

          char data[40];

          snprintf( data, 40,

               "%c%c%d %s\n",

               AUXILARY_CONTROL,

               COOLANT_ON_OFF,

               coolant->outputNumber,

               on ?

                    "On"

               :     "Off" );

          *msgPtr  += String( data ); }; };