Annotation of nono/vm/message.h, revision 1.1.1.3

1.1       root        1: //
                      2: // nono
                      3: // Copyright (C) 2022 nono project
                      4: // Licensed under nono-license.txt
                      5: //
                      6: 
                      7: //
                      8: // メッセージ
                      9: //
                     10: 
                     11: #pragma once
                     12: 
                     13: #include "device.h"
                     14: 
                     15: class MessageID
                     16: {
                     17:  public:
                     18:        enum {
1.1.1.3 ! root       19:                // リクエストフラグにビット割付されるメッセージ
        !            20:                // Bit0 は REQUEST_EXIT で使用しているため
        !            21:                // こちらでは NONE に割り付けて衝突しないようにしている。
1.1       root       22:                NONE = 0,
                     23: 
1.1.1.3 ! root       24:                HOSTCOM_RX,
        !            25:                HOSTNET_RX,
        !            26: 
        !            27:                MAX_REQUEST,
        !            28: 
        !            29:                // ここ以降はキューイングされるメッセージ
        !            30: 
1.1       root       31:                RESET,
                     32:                POWEROFF_EXIT,
                     33:                POWEROFF_RESTART,
1.1.1.2   root       34:                POWER_BUTTON,
1.1       root       35: 
                     36:                SCSIDEV_LOAD_0,
                     37:                SCSIDEV_LOAD_1,
                     38:                SCSIDEV_LOAD_2,
                     39:                SCSIDEV_LOAD_3,
                     40:                SCSIDEV_LOAD_4,
                     41:                SCSIDEV_LOAD_5,
                     42:                SCSIDEV_LOAD_6,
                     43:                SCSIDEV_LOAD_7,
                     44:                SCSIDEV_UNLOAD_0,
                     45:                SCSIDEV_UNLOAD_1,
                     46:                SCSIDEV_UNLOAD_2,
                     47:                SCSIDEV_UNLOAD_3,
                     48:                SCSIDEV_UNLOAD_4,
                     49:                SCSIDEV_UNLOAD_5,
                     50:                SCSIDEV_UNLOAD_6,
                     51:                SCSIDEV_UNLOAD_7,
                     52: 
1.1.1.2   root       53:                FDD_LOAD_0,
                     54:                FDD_LOAD_1,
                     55:                FDD_LOAD_2,
                     56:                FDD_LOAD_3,
                     57:                FDD_UNLOAD_0,
                     58:                FDD_UNLOAD_1,
                     59:                FDD_UNLOAD_2,
                     60:                FDD_UNLOAD_3,
                     61: 
1.1       root       62:                KEY_INPUT,
                     63: 
                     64:                NMI,
                     65: 
                     66:                SCHEDULER_SYNCMODE,
                     67: 
1.1.1.3 ! root       68:                MPU_TRACE_MAIN,
        !            69:                MPU_TRACE_XP,
1.1       root       70: 
1.1.1.3 ! root       71:                // MAX は宛先を確保する際の最大値。
1.1       root       72:                MAX,
1.1.1.3 ! root       73: 
        !            74:                // ここ以降は、経路中だけで使われるメッセージ。
        !            75: 
        !            76:                MPU_TRACE_ALL,
1.1       root       77:        };
                     78: 
                     79:  public:
                     80:        MessageID() {
                     81:                id = NONE;
                     82:        }
                     83:        MessageID(int id_) {
                     84:                id = id_;
                     85:        }
                     86: 
                     87:        MessageID& operator=(int id_) {
                     88:                id = id_;
                     89:                return *this;
                     90:        }
                     91:        operator int() const {
                     92:                return id;
                     93:        }
                     94: 
                     95:        static MessageID SCSIDEV_LOAD(int n) {
                     96:                return MessageID(SCSIDEV_LOAD_0 + n);
                     97:        }
                     98:        static MessageID SCSIDEV_UNLOAD(int n) {
                     99:                return MessageID(SCSIDEV_UNLOAD_0 + n);
                    100:        }
                    101: 
1.1.1.2   root      102:        static MessageID FDD_LOAD(int n) {
                    103:                return MessageID(FDD_LOAD_0 + n);
                    104:        }
                    105:        static MessageID FDD_UNLOAD(int n) {
                    106:                return MessageID(FDD_UNLOAD_0 + n);
                    107:        }
                    108: 
1.1       root      109:  private:
                    110:        int id;
                    111: };
                    112: 
                    113: using MessageCallback_t = void (Device::*)(MessageID, uint32);
                    114: #define ToMessageCallback(f) static_cast<MessageCallback_t>(f)

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.