OSDN Git Service

[VM] MEMORY:: class within some VM will change Foo_MEMORY:: to reduce misundestanding...
[csp-qt/common_source_project-fm7.git] / source / src / vm / fmr30 / serial.cpp
index 49ae087..0f1bf64 100644 (file)
@@ -16,7 +16,7 @@ void SERIAL::initialize()
        memset(sioctrl, sizeof(sioctrl), 1);
 }
 
-void SERIAL::write_io8(uint32 addr, uint32 data)
+void SERIAL::write_io8(uint32_t addr, uint32_t data)
 {
        switch(addr & 0xffff) {
        case 0x0a:
@@ -66,7 +66,7 @@ void SERIAL::write_io8(uint32 addr, uint32 data)
        }
 }
 
-uint32 SERIAL::read_io8(uint32 addr)
+uint32_t SERIAL::read_io8(uint32_t addr)
 {
        switch(addr & 0xffff) {
        case 0x0a:
@@ -101,7 +101,7 @@ uint32 SERIAL::read_io8(uint32 addr)
        return 0xff;
 }
 
-void SERIAL::write_signal(int id, uint32 data, uint32 mask)
+void SERIAL::write_signal(int id, uint32_t data, uint32_t mask)
 {
        switch(id) {
        case SIG_SERIAL_RXRDY_KB:
@@ -141,23 +141,22 @@ void SERIAL::update_intr(int ch)
 
 #define STATE_VERSION  1
 
-void SERIAL::save_state(FILEIO* state_fio)
+bool SERIAL::process_state(FILEIO* state_fio, bool loading)
 {
-       state_fio->FputUint32(STATE_VERSION);
-       state_fio->FputInt32(this_device_id);
-       
-       state_fio->Fwrite(sioctrl, sizeof(sioctrl), 1);
-}
-
-bool SERIAL::load_state(FILEIO* state_fio)
-{
-       if(state_fio->FgetUint32() != STATE_VERSION) {
+       if(!state_fio->StateCheckUint32(STATE_VERSION)) {
                return false;
        }
-       if(state_fio->FgetInt32() != this_device_id) {
+       if(!state_fio->StateCheckInt32(this_device_id)) {
                return false;
        }
-       state_fio->Fread(sioctrl, sizeof(sioctrl), 1);
+       //state_fio->StateBuffer(sioctrl, sizeof(sioctrl), 1);
+       for(int i = 0; i < 4; i++) {
+               state_fio->StateUint8(sioctrl[i].baud);
+               state_fio->StateUint8(sioctrl[i].ctrl);
+               state_fio->StateBool(sioctrl[i].rxrdy);
+               state_fio->StateBool(sioctrl[i].txrdy);
+               state_fio->StateUint8(sioctrl[i].intmask);
+               state_fio->StateUint8(sioctrl[i].intstat);
+       }
        return true;
 }
-