29#include <picsim/picsim.h>
37 printf("Incomplete: %s -> %s :%i\n", __func__, __FILE__, __LINE__); \
40enum { ARCH_P16, ARCH_P16E, ARCH_P18, ARCH_AVR8, ARCH_STM32, ARCH_STM8, ARCH_C51, ARCH_Z80, ARCH_ESP32, ARCH_UNKNOWN };
91#define INVALID_ID (MAX_IDS - 1)
94#define MAX_PIN_COUNT 256
104 void (*Callback)(
void* arg);
154 virtual void EvMouseButtonPress(
unsigned int button,
unsigned int x,
unsigned int y,
unsigned int state) = 0;
159 virtual void EvMouseButtonRelease(
unsigned int button,
unsigned int x,
unsigned int y,
unsigned int state) = 0;
164 virtual void EvMouseMove(
unsigned int button,
unsigned int x,
unsigned int y,
unsigned int state) {};
169 virtual void EvKeyPress(
unsigned int key,
unsigned int mask) = 0;
219 virtual void board_ButtonEvent(
const char* controlname,
unsigned int button,
unsigned int x,
unsigned int y,
220 unsigned int state) {};
320 virtual int MInit(
const char* processor,
const char* fname,
float freq) = 0;
395 virtual void MSetPin(
int pin,
unsigned char value) = 0;
476 virtual void DBGSetPC(
unsigned int pc) { INCOMPLETE; };
577 unsigned char CalcAngle(
int i,
int x,
int y);
582 virtual void SetScale(
double scale);
625 int TimerRegister_us(
const double micros,
void (*Callback)(
void* arg),
void* arg);
630 int TimerRegister_ms(
const double miles,
void (*Callback)(
void* arg),
void* arg);
675 virtual int GetUARTRX(
const int uart_num) {
return 0; };
680 virtual int GetUARTTX(
const int uart_num) {
return 0; };
682 virtual std::string GetUARTStrStatus(
const int uart_num) {
return "Not implemented!"; };
754 uint32_t InstCounter;
758 std::string pw_active_project;
759 std::string pw_project_type;
779#define board_init(name, function) \
780 static board* function##_create(void) { \
781 board* b = new function(); \
782 b->SetDefaultProcessor(b->GetProcessorName()); \
785 static void __attribute__((constructor)) function##_init(void); \
786 static void function##_init(void) { \
787 board_register(name, function##_create); \
790typedef board* (*board_create_func)(void);
792void board_register(
const char* name, board_create_func bcreate);
795board* create_board(
int* lab,
int* lab_);
799extern int BOARDS_LAST;
804 board_create_func bcreate;
810#define DEFAULT_BOARD 2
Board class.
Definition board.h:114
virtual unsigned int DBGGetRAMLARD(void)
board microcontroller get last ram read address
Definition board.h:569
virtual unsigned int DBGGetROMSize(void)
board microcontroller get ROM (FLASH) memory size
Definition board.h:529
virtual unsigned short GetOutputId(char *name)=0
return the output ids numbers of names used in output map
virtual unsigned short GetInputId(char *name)=0
return the input ids numbers of names used in input map
int TimerChange_ms(const int timer, const double miles)
Modify timer value with us.
Definition board.cc:490
input_t * GetInput(int n)
Get board input.
Definition board.cc:316
virtual std::string GetName(void)=0
Get board name registered in PICSimLab.
virtual void EvMouseButtonPress(unsigned int button, unsigned int x, unsigned int y, unsigned int state)=0
Event on the board.
output_t output[MAX_IDS]
output map elements
Definition board.h:729
void StartThread(void)
Start parallel thread.
Definition board.cc:383
virtual int DebugInit(int dtyppe)=0
Start debug support.
virtual unsigned char * DBGGetCONFIG_p(void)
board microcontroller get CONFIG memory pointer
Definition board.h:497
virtual void board_ButtonEvent(const char *controlname, unsigned int button, unsigned int x, unsigned int y, unsigned int state)
Called when window side controls are activated.
Definition board.h:219
input_t * input_ids[MAX_IDS]
input map elements by id order
Definition board.h:728
virtual void EvKeyRelease(unsigned int key, unsigned int mask)=0
Event on the board.
virtual unsigned int DBGGetRAMLAWR(void)
board microcontroller get last ram write address
Definition board.h:561
virtual std::string GetAboutInfo(void)=0
Return the about information of part.
virtual void Reset(void)=0
Reset board status.
virtual std::string GetClkLabel(void)
Return the description of clk label.
Definition board.h:687
virtual unsigned int DBGGetCONFIGSize(void)
board microcontroller get CONFIG memory size
Definition board.h:537
int use_oscope
use oscilloscope window
Definition board.h:733
virtual void MSetPin(int pin, unsigned char value)=0
board microcontroller set digital pin
virtual int GetUARTRX(const int uart_num)
Return the UART N RX pin number.
Definition board.h:675
virtual unsigned short * DBGGetProcID_p(void)
board microcontroller get pointer to processor ID
Definition board.h:460
void ReadOutputMap(std::string fname)
Read the Output Map.
Definition board.cc:208
virtual void RegisterRemoteControl(void)
Register remote control variables.
Definition board.h:718
virtual void EvThreadRun(void)
Event on the board.
Definition board.h:184
virtual void MSetPinOAV(int pin, float value)=0
board microcontroller set digital pin output average value
virtual void ReadPreferences(char *name, char *value)
Called whe configuration file load preferences.
Definition board.h:199
virtual float MGetInstClockFreq(void)=0
board microcontroller get cpu internal clock (in PIC frequency/4)
virtual void IoLockAccess(void)
Lock IO to others threads access.
Definition board.h:665
virtual unsigned int DBGGetIDSize(void)
board microcontroller get internal IDS memory size
Definition board.h:545
virtual void Draw(void)=0
Called ever 100ms to draw board.
virtual int MGetIOUpdated(void)=0
get microcontroler status IO updated
virtual unsigned char * DBGGetID_p(void)
board microcontroller get internal IDS memory pointer
Definition board.h:505
std::string DProc
Name of default board processor.
Definition board.h:726
void SetDefaultProcessor(std::string dproc)
Set board default processor.
Definition board.h:605
int TimerRegister_us(const double micros, void(*Callback)(void *arg), void *arg)
Register a new timer with time in us (default enabled).
Definition board.cc:416
output_t * GetOutput(int n)
Get board input.
Definition board.cc:327
virtual unsigned char * DBGGetRAM_p(void)
board microcontroller get RAM memory pointer
Definition board.h:481
void SetPWProjectType(std::string type)
Set the active project type created by Project Wizard.
Definition board.h:712
virtual unsigned char MGetPin(int pin)=0
board microcontroller get digital pin value
double GetScale(void)
Get board draw scale.
Definition board.cc:365
int GetOutputCount(void)
Get board output count.
Definition board.cc:323
int GetInputCount(void)
Get board input count.
Definition board.cc:312
int TimerSetState(const int timer, const int enabled)
Enable or disable timer.
Definition board.cc:503
void InstCounterInc(void)
Increment the Intructions Counter.
Definition board.cc:403
int outputc
output map elements counter
Definition board.h:732
virtual void DBGSetPC(unsigned int pc)
board microcontroller set PC
Definition board.h:476
void SetUseOscilloscope(int uo)
Enable/disable oscilloscope measurement.
Definition board.cc:288
virtual void MSetFreq(float freq)=0
board microcontroller set frequency
virtual void EvMouseButtonRelease(unsigned int button, unsigned int x, unsigned int y, unsigned int state)=0
Event on the board.
virtual int MInit(const char *processor, const char *fname, float freq)=0
board microcontroller init
virtual unsigned char * DBGGetROM_p(void)
board microcontroller get ROM (FLASH) memory pointer
Definition board.h:489
virtual std::string GetPictureFileName(void)
Return the filename of board picture.
Definition board.cc:375
void SetProcessorName(std::string proc)
Set board processor.
Definition board.cc:304
virtual int MGetPinCount(void)=0
board microcontroller pin count
virtual int MGetArchitecture(void)=0
Return board microcontroller architecture.
virtual void MSetSimulationRun(int run)
Called when simulation is paused or resumed.
Definition board.h:692
virtual int CpuInitialized(void)=0
return true if microcontroller is initialized
virtual int MDumpMemory(const char *fname)=0
board microcontroller save non volatile memory to hex file
output_t * output_ids[MAX_IDS]
output map elements by id order
Definition board.h:730
virtual void WritePreferences(void)
Called to save board preferences in configuration file.
Definition board.h:194
virtual const picpin * MGetPinsValues(void)=0
board microcontroller get all pins list struct
int TimerChange_us(const int timer, const double micros)
Modify timer value with us.
Definition board.cc:477
unsigned char p_RST
board /RESET pin state
Definition board.h:735
std::string GetPWActiveProject(void)
Return the active project created by Project Wizard.
Definition board.h:697
virtual float * MGetPinOAVPtr(int pin)=0
board microcontroller get pointer to digital pin average value
int MGetClocksPerInstructions(void)
board microcontroller get Clock pulses per instruction (in PIC equal to 4)
Definition board.cc:334
virtual void MEraseFlash(void)=0
board microcontroller erase flash memory (program)
input_t input[MAX_IDS]
input map elements
Definition board.h:727
virtual void MSetPinDOV(int pin, unsigned char ovalue)=0
board microcontroller set Default Open Value (external pull)
virtual std::string GetSupportedIDEs(void)
Return a list of supported IDEs in project wizard.
Definition board.h:134
virtual std::string MGetPinName(int pin)=0
board microcontroller pin name
virtual std::string GetDebugName(void)=0
Get debug interface name.
uint32_t GetInstCounter_ms(const uint32_t start)
Get elapsed time from instruction counter in us.
Definition board.cc:525
virtual float MGetVCC(void)=0
board microcontroller get vcc
virtual void MClearIOUpdated(void)=0
clear microcontroler status IO updated
board(void)
Called once on board creation.
Definition board.cc:34
virtual void board_Event(const char *controlname)
Called when window side controls are activated.
Definition board.h:214
uint64_t TimerGet_ns(const int timer)
Get elapsed time from instruction counter in ns.
Definition board.cc:514
std::string GetProcessorName(void)
Get board processor in use.
Definition board.cc:308
virtual void Run_CPU(void)=0
Paralle thread called ever 100ms to run cpu code.
virtual unsigned char * DBGGetEEPROM_p(void)
board microcontroller get data EEPROM memory pointer
Definition board.h:513
virtual void RefreshStatus(void)
Called ever 1s to refresh status.
Definition board.cc:284
void StopThread(void)
Stop parallel thread.
Definition board.cc:393
virtual void SetScale(double scale)
Set board draw scale.
Definition board.cc:361
virtual int MReset(int flags)=0
board microcontroller reset
virtual void MEnd(void)=0
board microcontroller end
virtual int MGetResetPin(void)=0
Get the Reset pin of microcontroller.
std::string GetDefaultProcessor(void)
Get board default processor.
Definition board.h:599
virtual void MSetAPin(int pin, float value)=0
board microcontroller set analog pin
std::string GetPWProjectType(void)
Return the active project type created by Project Wizard.
Definition board.h:707
int use_spare
use spare parts window
Definition board.h:734
void SetPWActiveProject(std::string path)
Set the active project created by Project Wizard.
Definition board.h:702
int TimerUnregister(const int timer)
Unregister timer.
Definition board.cc:456
virtual void MStepResume(void)=0
board microcontroller run one or two steps to resume instruction
virtual int GetUARTTX(const int uart_num)
Return the UART N TX pin number.
Definition board.h:680
virtual std::string GetSupportedDevices(void)=0
Return a list of supported microcontrollers.
int GetUseSpareParts(void)
Get if spare parts is in use.
Definition board.cc:300
virtual void IoUnlockAccess(void)
Unlock IO to others threads access.
Definition board.h:670
unsigned char CalcAngle(int i, int x, int y)
Calc rotary potentiometer angle.
Definition board.cc:338
virtual void MSetSerial(const char *port)=0
Set serial port name to use.
virtual void MStep(void)=0
board microcontroller run one step
virtual std::string GetMapFile(void)
Return the filename of board picture map.
Definition board.cc:379
int TimerRegister_ms(const double miles, void(*Callback)(void *arg), void *arg)
Register a new timer with time in ms (default enabled).
Definition board.cc:436
int inputc
input map elements counter
Definition board.h:731
virtual std::string GetDebuggers(void)=0
Return board supported debug interfaces name.
virtual std::string GetSimBackends(void)=0
Return board backends name.
virtual float MGetFreq(void)=0
board microcontroller get frequency
int GetUseOscilloscope(void)
Get if oscilloscope is in use.
Definition board.cc:296
virtual ~board(void)
Called once on board destruction.
Definition board.cc:62
virtual int GetDefaultClock(void)
Get board default clock in MHz.
Definition board.h:593
virtual unsigned int DBGGetEEPROM_Size(void)
board microcontroller get data EEPROM memory size
Definition board.h:553
virtual void EvMouseMove(unsigned int button, unsigned int x, unsigned int y, unsigned int state)
Event on the board.
Definition board.h:164
uint32_t GetInstCounter(void)
Get instruction counter.
Definition board.h:610
virtual unsigned int DBGGetRAMSize(void)
board microcontroller get RAM memory size
Definition board.h:521
void ReadMaps(void)
Read maps.
Definition board.cc:64
virtual void DebugLoop(void)=0
debug step (pooling)
void SetUseSpareParts(int sp)
Enable/disable spare parts.
Definition board.cc:292
virtual void MSetVCC(float vcc)=0
board microcontroller set vcc
virtual void EvOnShow(void)
Event on the board.
Definition board.cc:369
virtual unsigned int DBGGetPC(void)
board microcontroller get PC
Definition board.h:468
virtual void EvKeyPress(unsigned int key, unsigned int mask)=0
Event on the board.
uint32_t GetInstCounter_us(const uint32_t start)
Get elapsed time from instruction counter in us.
Definition board.cc:521
void ReadInputMap(std::string fname)
Read the Input Map.
Definition board.cc:79
std::string Proc
Name of processor in use.
Definition board.h:725
void TimerUpdateFrequency(float freq)
Update Timer counters on frequency change.
Definition board.cc:529
internal timer struct
Definition board.h:100
output map struct
Definition board.h:68
float r
radius
Definition board.h:75
float x2
x2 position
Definition board.h:70
short value_s
updated value short
Definition board.h:82
unsigned char value
updated value
Definition board.h:81
float y2
y2 position
Definition board.h:72
float y1
y1 position
Definition board.h:71
void * status
rcontrol status
Definition board.h:78
unsigned short id
region ID
Definition board.h:77
char name[10]
region name
Definition board.h:76
float x1
x1 position
Definition board.h:69
float value_f
updated value float
Definition board.h:83
unsigned char update
need draw update
Definition board.h:79
float cx
center x position
Definition board.h:73
float cy
center y position
Definition board.h:74