117 lines
2.9 KiB
C++
117 lines
2.9 KiB
C++
/*
|
|
AnycubicTFT.h --- Support for Anycubic i3 Mega TFT
|
|
Created by Christian Hopp on 09.12.17.
|
|
|
|
This library is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Lesser General Public
|
|
License as published by the Free Software Foundation; either
|
|
version 2.1 of the License, or (at your option) any later version.
|
|
|
|
This library is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Lesser General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Lesser General Public
|
|
License along with this library; if not, write to the Free Software
|
|
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
*/
|
|
|
|
|
|
#ifndef AnycubicTFT_h
|
|
#define AnycubicTFT_h
|
|
|
|
#include <stdio.h>
|
|
#include "MarlinConfig.h"
|
|
|
|
char *itostr2(const uint8_t &x);
|
|
|
|
#ifndef ULTRA_LCD
|
|
char *itostr3(const int);
|
|
char *ftostr32(const float &);
|
|
#endif
|
|
|
|
#define TFTBUFSIZE 4
|
|
#define TFT_MAX_CMD_SIZE 96
|
|
#define MSG_MY_VERSION "V116"
|
|
|
|
#define ANYCUBIC_TFT_STATE_IDLE 0
|
|
#define ANYCUBIC_TFT_STATE_SDPRINT 1
|
|
#define ANYCUBIC_TFT_STATE_SDPAUSE 2
|
|
#define ANYCUBIC_TFT_STATE_SDPAUSE_REQ 3
|
|
#define ANYCUBIC_TFT_STATE_SDPAUSE_OOF 4
|
|
#define ANYCUBIC_TFT_STATE_SDSTOP_REQ 5
|
|
#define ANYCUBIC_TFT_STATE_SDOUTAGE 99
|
|
|
|
|
|
class AnycubicTFTClass {
|
|
public:
|
|
AnycubicTFTClass();
|
|
void Setup();
|
|
void CommandScan();
|
|
void BedHeatingStart();
|
|
void BedHeatingDone();
|
|
void HeatingDone();
|
|
void HeatingStart();
|
|
void FilamentRunout();
|
|
void KillTFT();
|
|
|
|
private:
|
|
char TFTcmdbuffer[TFTBUFSIZE][TFT_MAX_CMD_SIZE];
|
|
int TFTbuflen=0;
|
|
int TFTbufindr = 0;
|
|
int TFTbufindw = 0;
|
|
char serial3_char;
|
|
int serial3_count = 0;
|
|
char *TFTstrchr_pointer;
|
|
char TFTstate=ANYCUBIC_TFT_STATE_IDLE;
|
|
char FlagResumFromOutage=0;
|
|
uint16_t filenumber=0;
|
|
unsigned long starttime=0;
|
|
unsigned long stoptime=0;
|
|
uint8_t tmp_extruder=0;
|
|
char LastSDstatus=0;
|
|
uint16_t HeaterCheckCount=0;
|
|
char PausedByRunout=false;
|
|
char PausedByFilamentChange=false;
|
|
|
|
struct OutageDataStruct {
|
|
char OutageDataVersion;
|
|
char OutageFlag;
|
|
float last_position[XYZE];
|
|
float last_bed_temp;
|
|
float last_hotend_temp;
|
|
long lastSDposition;
|
|
} OutageData;
|
|
|
|
void WriteOutageEEPromData();
|
|
void ReadOutageEEPromData();
|
|
|
|
float CodeValue();
|
|
bool CodeSeen(char);
|
|
void Ls();
|
|
void StartPrint();
|
|
void PausePrint();
|
|
void StopPrint();
|
|
void StateHandler();
|
|
void GetCommandFromTFT();
|
|
void CheckSDCardChange();
|
|
void CheckHeaterError();
|
|
void HandleSpecialMenu();
|
|
void FilamentChangePause();
|
|
void FilamentChangeResume();
|
|
|
|
char SelectedDirectory[30];
|
|
uint8_t SpecialMenu=false;
|
|
|
|
#if ENABLED(ANYCUBIC_FILAMENT_RUNOUT_SENSOR)
|
|
char FilamentTestStatus=false;
|
|
char FilamentTestLastStatus=false;
|
|
long FilamentRunoutCounter=0;
|
|
#endif
|
|
};
|
|
|
|
extern AnycubicTFTClass AnycubicTFT;
|
|
|
|
#endif /* AnycubicTFT_h */
|