package com.mogo.cloud;

import com.elegant.spi.annotations.Service;
import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
import com.mogo.realtime.api.IRealTimeProvider;
import com.mogo.realtime.entity.SocketReceiveDataProto3;
import com.mogo.realtime.util.MortonCode;

import static com.mogo.cloud.socket.SocketMsgType.MSG_TYPE_UPLINK_CAR_DATA;


/**
 * @author liujing
 * @description 描述
 * @since: 2021/1/26
 */
@Service(value = IRealTimeProvider.class)
class SPIRealTimeTestClass implements IRealTimeProvider {

    @Override
    public SocketReceiveDataProto3.SocketReceiveDataProto getLocationMsg() {

        long mortonCode = MortonCode.encodeMorton(116.410871, 39.968309);

        SocketReceiveDataProto3.LocationInfoProto locationInfoProto =
                SocketReceiveDataProto3.LocationInfoProto.newBuilder()
                        .setLat(39.968309)
                        .setLon(116.410871)
                        .setHeading(120)
                        .setSystemTime(System.currentTimeMillis())
                        .setSatelliteTime(System.currentTimeMillis())
                        .setAlt(55)
                        .setDataAccuracy(1)
                        .setSpeed(30)
                        .setMortonCode(mortonCode)
                        .setSn(MoGoAiCloudClientConfig.getInstance().getSn())
                        .build();

        SocketReceiveDataProto3.MyLocationReq myLocationReq =
                SocketReceiveDataProto3.MyLocationReq.newBuilder()
                        .setLastCoordinate(locationInfoProto)
                        .setDataAccuracy(1)
                        .setMortonCode(mortonCode)
                        .setFromType(0)
                        .setSn(MoGoAiCloudClientConfig.getInstance().getSn())
                        .build();

        SocketReceiveDataProto3.OnePerSecondSendReqProto self =
                SocketReceiveDataProto3.OnePerSecondSendReqProto.newBuilder()
                        .setSelf(myLocationReq)
                        .build();
        return SocketReceiveDataProto3.SocketReceiveDataProto.newBuilder()
                .setIPCSn(MoGoAiCloudClientConfig.getInstance().getSn() + "xavier")
                .setSn(MoGoAiCloudClientConfig.getInstance().getSn())
                .setData(self)
                .setMsgType(MSG_TYPE_UPLINK_CAR_DATA.getMsgType())
                .setSeq(System.currentTimeMillis()).build();

    }
}
