syntax = "proto3";

option csharp_namespace = "Leica.Spider.SpiderBasics";

package spider.spiderbasics;

message SpiderRealTimeProduct {
    enum MessageType {
        option allow_alias = true;

        LEICA = 0;
        LEICA_4G = 1;
        RTCM_1_2 = 3;
        RTCM_9_2 = 5;
        RTCM_18_19 = 7;
        RTCM_20_21 = 8;
        RTCM_1_2_18_19 = 10;
        RTCM_1_2_20_21 = 11;
        CMR = 9;
        CMR_PLUS = 12;
        RTCM_V3_EXTENDED = 13;
        RTCM_V3_COMPACT = 15;
        PROPRIETARY = 20;

        MESSAGE_TYPE_SIZE = 13;

        // for NW
        RTCM_1004 = 13 /* RTCM_V3_EXTENDED */;
        RTCM_1003 = 15 /* RTCM_V3_COMPACT */;
        RTCM_18_19_IMAX = 16;
        RTCM_20_21_IMAX = 17;
        RTCM_1004_IMAX = 18;
        RTCM_1004_1015_1016_MAX = 19;
        LEICA_IMAX = 21;
        CMR_IMAX = 22;
        CMR_PLUS_IMAX = 23;
        RTCM_1004_1017_MAX = 24;
        RTCM_30_TRANSFORM = 25;
        RTCM_18_19_VRS = 26;
        RTCM_20_21_VRS = 27;
        RTCM_1004_VRS = 28;
        LEICA_VRS = 40;
        CMR_VRS = 41;
        CMR_PLUS_VRS = 42;
        RTCM_18_19_FKP = 43;
        RTCM_20_21_FKP = 44;
        RTCM3_FKP = 45;
        ROVER_NMEA = 46;

        // NDGPS IMAX based
        RTCM2_NDGPS_IMAXBASED_1_2 = 47;
        RTCM2_NDGPS_IMAXBASED_9_2 = 48;
        RTCM2_NDGPS_IMAXBASED_1_2_18_19 = 49;
        RTCM2_NDGPS_IMAXBASED_1_2_20_21 = 50;

        // NDGPS VRS based
        RTCM2_NDGPS_VRSBASED_1_2 = 51;
        RTCM2_NDGPS_VRSBASED_9_2 = 52;
        RTCM2_NDGPS_VRSBASED_1_2_18_19 = 53;
        RTCM2_NDGPS_VRSBASED_1_2_20_21 = 54;
        LEICA_4G_IMAX = 55;
        LEICA_4G_VRS = 56;
        LEICA_4G_MAX = 57;


        // RTCM 3 MSM
        RTCM_V3_MSM5 = 58;
        RTCM_MSM5_IMAX = 59;
        RTCM_MSM5_VRS = 60;
        RTCM_V3_MSM4 = 61;
        RTCM_MSM4_IMAX = 62;
        RTCM_MSM4_VRS = 63;

        // SSR
        SSR_ATM_RAW_BIN_DMP = 64;
        SSR_ATM_RAW_LEICA_FORMAT = 65; // SSR Leica 4G

        SSR_ATM_ZIP_BIN_DMP = 66;
        SSR_ATM_ZIP_LEICA_FORMAT = 67;

        SSR_RTCM3_FMT = 68;

        NW_SIZE = 44;

        // Monitoring
        MONITORING_NMEA = 30;
        MONITORING_PROP = 31;

        MESSAGE_TYPE_UNKNOWN = -1;
    }

    enum ProductType
    {
        AUTOMATIC_CELLS = 0;
        SINGLE_CELL = 1;
        NEAREST_SITE = 2;
        SINGLE_SITE = 3;
        SINGLE_ROVER_NMEA_FORWARDING = 4;
        /**
         * SSR based NT product
         */
        VSSR = 5;
        SSR = 6;
        PRODUCT_TYPE_SIZE = 7;

        PRODUCT_TYPE_UNKNOWN = -1;
    };

    enum AuthFlag
    {
        NONE = 0;
        GPUID = 1;
        PHONE_NUMBER = 2;
        NTRIP = 4;
        IP_ADDRESS = 8;
        POSITION_REQUIRED = 16;
        LEICA_SENSOR_ID = 32;
    };
}
