from hub import methods, Global

import threading
import time
import json
import os

# --- for linux
# save_dir = f"/home/server/logs"

# --- for windows
# save_dir = r'C:\SRI-DINO.Server-py\logs'  # sri内网测试环境
save_dir = r'C:\logs'  # sri内网测试环境


def method_c001(client, userdata, message):
    """消息处理方法"""
    """
        {
    'basControl': {
        'directSwitch': 1,
        'eStop': 0,
        'gearControl': 0,
        'hazardLight': 0,
        'keyStatus': 0,
        'parkControl': 0,
        'silencedAlarm': 0,
        'travelLight': 2,
        'travelMode': 0,
        'vehicleHorn': 0
    },
    'cockpitID': 'Cop001',
    'driverControl': {
        'accPedal': '0 AND 0 || 0 AND -1',
        'brakePedal': '2 AND 2',
        'steeringWheel': '1 AND 0',
        'turnMode': 0,
        'turnSignal': 0
    },
    'errCode': {
        'errAccPedal': 0,
        'errBasOperation': '',
        'errBrakePedal': 0,
        'errEndTool': 0,
        'errHandle': 0,
        'errOther': '',
        'errSteeringWheel': 0
    },
    'taskControl': {
        'baseLegControl': '103 AND 24',
        'baseLegSwitch': 0,
        'bypassSwitch': 0,
        'cabLift': 0,
        'coopSignal': 3,
        'enableHydraulic': 1,
        'endJoint': '1 AND 0',
        'esCabLift': 0,
        'suckerSelect': 0,
        'taskJoint_1': '5 AND 0',
        'taskJoint_2': '0 AND 0',
        'taskJoint_3': '0 AND 0',
        'toolControl': '0 AND 0',
        'workLight': 0
    },
    'timeStamp': 576301601,
    'userID': 'Ego',
    'vehicleID': '0538'
    }
    """
    # --- log ---
    methods.debug_log(f"MessageListenerC001|19", f"#message.payload: {message.payload}")
    log_dict = json.loads(message.payload)
    # try:
    #     log_dict = json.loads(message.payload)
    #     methods.debug_log(f"MessageListenerC001|19", f"#message.payload: {repr(log_dict)}")
    # except Exception as e:
    #     pass


def subscribe_c001():
    """"""
    Global.emqx.start_subscribe_loop(
        decorate_method=method_c001,
        subscribe_topic='Cockpit/CanBus/CanId001/Cop001'
    )