mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-03-18 21:30:38 +01:00
[ion] Clean the simulator
This commit is contained in:
@@ -1,21 +0,0 @@
|
||||
#include "fltkkbd.h"
|
||||
#include "fltkkbdbutton.h"
|
||||
|
||||
void FltkKbdButtonCallback(Fl_Widget * w, void * context) {
|
||||
FltkKbd * kbd = (FltkKbd *)context;
|
||||
FltkKbdButton * button = (FltkKbdButton *)w;
|
||||
kbd->m_keyStates[button->m_key] = button->value();
|
||||
}
|
||||
|
||||
FltkKbd::FltkKbd(int x, int y, int w, int h) : Fl_Group(x, y, w, h) {
|
||||
for (int i=0; i<ION_NUMBER_OF_KEYS; i++) {
|
||||
m_keyStates[i] = false;
|
||||
}
|
||||
for (int k=0; k<ION_NUMBER_OF_KEYS; k++) {
|
||||
FltkKbdButton * b = new FltkKbdButton(x+(k*w)/ION_NUMBER_OF_KEYS, y, w/ION_NUMBER_OF_KEYS, h);
|
||||
b->m_key = (ion_key_t)k;
|
||||
b->when(FL_WHEN_CHANGED);
|
||||
b->callback(FltkKbdButtonCallback, (void *)this);
|
||||
}
|
||||
end();
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
#include "fltkkbdbutton.h"
|
||||
|
||||
FltkKbdButton::FltkKbdButton(int x, int y, int w, int h, const char * label) :
|
||||
Fl_Button(x, y, w, h, label) {
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
#ifndef ION_FLTK_KBD_BUTTON
|
||||
#define ION_FLTK_KBD_BUTTON
|
||||
|
||||
#include <FL/Fl_Button.H>
|
||||
extern "C" {
|
||||
#include <ion/keyboard.h>
|
||||
}
|
||||
|
||||
class FltkKbdButton : public Fl_Button {
|
||||
public:
|
||||
FltkKbdButton(int x, int y, int w, int h, const char * label = 0);
|
||||
ion_key_t m_key;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -1,5 +1,7 @@
|
||||
objs += $(addprefix ion/platform/simulator/, init.o platform.o framebuffer.o)
|
||||
objs += $(addprefix ion/drivers/, fltklcd/fltklcd.o fltkkbd/fltkkbd.o fltkkbd/fltkkbdbutton.o)
|
||||
objs += $(addprefix ion/src/simulator/, init.o)
|
||||
objs += $(addprefix ion/src/simulator/boot/, main.o)
|
||||
objs += $(addprefix ion/src/simulator/display/, fltklcd.o)
|
||||
objs += $(addprefix ion/src/simulator/keyboard/, fltkkbd.o)
|
||||
|
||||
#SFLAGS += -I/usr/local/Cellar/fltk/1.3.3/include -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_THREAD_SAFE -D_REENTRANT
|
||||
LDFLAGS += -L/usr/local/Cellar/fltk/1.3.3/lib -lfltk -lpthread -framework Cocoa
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
objs += $(addprefix boot/simulator/, main.o)
|
||||
@@ -1,5 +1,7 @@
|
||||
#include <boot/boot.h>
|
||||
#include <ion.h>
|
||||
#include "../init.h"
|
||||
|
||||
int main(int argc, char * argv[]) {
|
||||
boot();
|
||||
init_platform();
|
||||
ion_app();
|
||||
}
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
#include "framebuffer.h"
|
||||
#include <ion.h>
|
||||
#include <assert.h>
|
||||
|
||||
void ion_set_pixel(uint8_t x, uint8_t y, uint8_t color) {
|
||||
assert(x <= FRAMEBUFFER_WIDTH);
|
||||
assert(y <= FRAMEBUFFER_HEIGHT);
|
||||
|
||||
char * byte = FRAMEBUFFER_ADDRESS + ((y*FRAMEBUFFER_WIDTH)+x);
|
||||
*byte = color;
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
#ifndef ION_SIMULATOR_FRAMEBUFFER_H
|
||||
#define ION_SIMULATOR_FRAMEBUFFER_H
|
||||
|
||||
extern void * PlatformFramebuffer;
|
||||
|
||||
#define FRAMEBUFFER_ADDRESS PlatformFramebuffer
|
||||
#define FRAMEBUFFER_WIDTH 320
|
||||
#define FRAMEBUFFER_HEIGHT 240
|
||||
#define FRAMEBUFFER_BITS_PER_PIXEL 8
|
||||
|
||||
#endif
|
||||
@@ -3,37 +3,51 @@ extern "C" {
|
||||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include "init.h"
|
||||
}
|
||||
#include "platform.h"
|
||||
#include "framebuffer.h"
|
||||
#include <FL/Fl.H>
|
||||
#include <FL/Fl_Window.H>
|
||||
#include <FL/Fl_Box.H>
|
||||
#include <ion/drivers/fltklcd/fltklcd.h>
|
||||
#include <ion/drivers/fltkkbd/fltkkbd.h>
|
||||
|
||||
void ion_init() {
|
||||
#include "display/fltklcd.h"
|
||||
#include "keyboard/fltkkbd.h"
|
||||
|
||||
static FltkLCD * sDisplay;
|
||||
static FltkKbd * sKeyboard;
|
||||
|
||||
#define FRAMEBUFFER_ADDRESS (sDisplay->m_framebuffer)
|
||||
#define FRAMEBUFFER_WIDTH 320
|
||||
#define FRAMEBUFFER_HEIGHT 240
|
||||
#define FRAMEBUFFER_BITS_PER_PIXEL 8
|
||||
|
||||
void init_platform() {
|
||||
Fl::visual(FL_RGB);
|
||||
int margin = 10;
|
||||
|
||||
Fl_Window * window = new Fl_Window(FRAMEBUFFER_WIDTH+2*margin, FRAMEBUFFER_HEIGHT+2*margin+120+2*margin);
|
||||
|
||||
FltkLCD * lcd = new FltkLCD(margin, margin, FRAMEBUFFER_WIDTH, FRAMEBUFFER_HEIGHT);
|
||||
sDisplay = new FltkLCD(margin, margin, FRAMEBUFFER_WIDTH, FRAMEBUFFER_HEIGHT);
|
||||
assert(FRAMEBUFFER_BITS_PER_PIXEL == 8);
|
||||
Platform.display = lcd;
|
||||
PlatformFramebuffer = lcd->m_framebuffer;
|
||||
|
||||
FltkKbd * kbd = new FltkKbd(margin,FRAMEBUFFER_HEIGHT+3*margin,FRAMEBUFFER_WIDTH,120);
|
||||
Platform.keyboard = kbd;
|
||||
ion_key_states = kbd->m_keyStates;
|
||||
sKeyboard = new FltkKbd(margin,FRAMEBUFFER_HEIGHT+3*margin,FRAMEBUFFER_WIDTH,120);
|
||||
|
||||
window->end();
|
||||
window->show(NULL, NULL);
|
||||
//Fl::run();
|
||||
}
|
||||
|
||||
void ion_set_pixel(uint8_t x, uint8_t y, uint8_t color) {
|
||||
assert(x <= FRAMEBUFFER_WIDTH);
|
||||
assert(y <= FRAMEBUFFER_HEIGHT);
|
||||
char * byte = (char *)(FRAMEBUFFER_ADDRESS) + ((y*FRAMEBUFFER_WIDTH)+x);
|
||||
*byte = color;
|
||||
}
|
||||
|
||||
bool ion_key_down(ion_key_t key) {
|
||||
return sKeyboard->key_down(key);
|
||||
}
|
||||
|
||||
void ion_sleep() {
|
||||
usleep(1000);
|
||||
Platform.display->redraw();
|
||||
sDisplay->redraw();
|
||||
Fl::wait();
|
||||
}
|
||||
|
||||
6
ion/src/simulator/init.h
Normal file
6
ion/src/simulator/init.h
Normal file
@@ -0,0 +1,6 @@
|
||||
#ifndef ION_SIMULATOR_PLATFORM_INIT_H
|
||||
#define ION_SIMULATOR_PLATFORM_INIT_H
|
||||
|
||||
void init_platform();
|
||||
|
||||
#endif
|
||||
12
ion/src/simulator/keyboard/fltkkbd.cpp
Normal file
12
ion/src/simulator/keyboard/fltkkbd.cpp
Normal file
@@ -0,0 +1,12 @@
|
||||
#include "fltkkbd.h"
|
||||
|
||||
FltkKbd::FltkKbd(int x, int y, int w, int h) : Fl_Group(x, y, w, h) {
|
||||
for (int k=0; k<ION_NUMBER_OF_KEYS; k++) {
|
||||
m_buttons[k] = new Fl_Button(x+(k*w)/ION_NUMBER_OF_KEYS, y, w/ION_NUMBER_OF_KEYS, h);
|
||||
}
|
||||
end();
|
||||
}
|
||||
|
||||
bool FltkKbd::key_down(ion_key_t key) {
|
||||
return m_buttons[key]->value();
|
||||
}
|
||||
@@ -2,6 +2,7 @@
|
||||
#define ION_FLTK_KBD
|
||||
|
||||
#include <FL/Fl_Group.H>
|
||||
#include <FL/Fl_Button.H>
|
||||
extern "C" {
|
||||
#include <ion/keyboard.h>
|
||||
}
|
||||
@@ -9,7 +10,9 @@ extern "C" {
|
||||
class FltkKbd : public Fl_Group {
|
||||
public:
|
||||
FltkKbd(int x, int y, int w, int h);
|
||||
bool m_keyStates[ION_NUMBER_OF_KEYS];
|
||||
bool key_down(ion_key_t key);
|
||||
private:
|
||||
Fl_Button * m_buttons[ION_NUMBER_OF_KEYS];
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -1,4 +0,0 @@
|
||||
#include "platform.h"
|
||||
|
||||
platform_t Platform;
|
||||
void * PlatformFramebuffer;
|
||||
@@ -1,17 +0,0 @@
|
||||
#ifndef ION_SIMULATOR_PLATFORM_H
|
||||
#define ION_SIMULATOR_PLATFORM_H
|
||||
|
||||
#include <ion/drivers/fltklcd/fltklcd.h>
|
||||
#include <ion/drivers/fltkkbd/fltkkbd.h>
|
||||
extern "C" {
|
||||
#include "framebuffer.h"
|
||||
}
|
||||
|
||||
typedef struct {
|
||||
FltkLCD * display;
|
||||
FltkKbd * keyboard;
|
||||
} platform_t;
|
||||
|
||||
extern platform_t Platform;
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user