示例#1
0
def create_time_table(payload):
    """
    产生timetable
    :param: payload 包含必要的关于产生timetable的参数
    :return: timeTable_id 存储timeTable的id
    """
    action = payload.get("action", None)
    obtime = payload.get("obtime", None)
    height = payload.get("height", None)
    protocol = payload.get("protocol", None)
    distri_id = payload.get("distri_id", None)
    partable_id = payload.get("partable_id", None)
    timetable_id = make_id(action)
    sub_payload = {
        "action": action,
        "obtime": obtime,
        "height": height,
        "protocol": protocol,
        "distri_id": distri_id,
        "partable_id": partable_id,
        "timetable_id": timetable_id
    }
    timetable_model, error = TimetableModel.objects.create(distri_id=distri_id,
                                                           partable_id=partable_id,
                                                           timetable_id=timetable_id,
                                                           obtime=obtime,
                                                           protocol=protocol
                                                          )
    if not timetable_model:
        return control_response(code=ModuErrorCode.TIMETABLE_SAVED_FAILED, msg=error, ret_name_id="timetable_id")
    # matlab_create_time_table.apply_async([sub_payload])
    return control_response(code=0, msg="timetable running", ret_set=[timetable_id], ret_name_id="timetable_id")
示例#2
0
def create_ves_data(payload):
    """
    产生船舶发送数据
    :param: payload 包含必要的输入信息
    :return: send_data_id 发送信息表的id
    """
    action = payload.get("action", None)
    distri_id = payload.get("distri_id", None)
    timetable_id = payload.get("timetable_id", None)
    aisdata_id = make_id(action)

    sub_payload = {
        "action": action,
        "distri_id": distri_id,
        "timetable_id": timetable_id,
        "aisdata_id": aisdata_id
    }
    aisdata_model, error = AisdataModel.objects.create(distri_id=distri_id,
                                                       timetable_id=timetable_id,
                                                       aisdata_id=aisdata_id
                                                       )
    if not aisdata_model:
        return control_response(code=ModuErrorCode.AISDATA_SAVED_FAILED, msg=error, ret_name_id="aisdata_id")
    # matlab_create_ves_data.apply_async([sub_payload])
    return control_response(code=0, msg="aisdate running", ret_set=[aisdata_id], ret_name_id="aisdata_id")
示例#3
0
def create_aissig(payload):
    """
    产生AIS信号
    :param payload: 包含必要的关于产生timetable的参数
    :return: aisSig_Path 存储AISSig的路径
    """
    # action = payload("action", None)
    action = payload.get("action", None)
    filename = payload.get("filename", None)
    packagenum = payload.get("packagenum", None)
    obtime = payload.get("obtime", None)
    vesnum = payload.get("vesnum", None)
    height = payload.get("height", None)
    partable_id = payload.get("partable_id", None)
    timetable_id = payload.get("timetable_id", None)
    aisdata_id = payload.get("aisdata_id", None)
    snr = payload.get("snr")
    sub_payload = {
        "action": action,
        "obtime": obtime,
        "vesnum": vesnum,
        "height": height,
        "partable_id": partable_id,
        "timetable_id": timetable_id,
        "aisdata_id": aisdata_id,
        # "signal_id": signal_id,
        "snr": snr
    }
    signal_id_list = []
    for packageIndex in range(packagenum):
        if packagenum == 1:
            filenameUpdate = filename
        else:
            filenameUpdate = filename + "_" + str(packageIndex)
        signal_id = make_id(action)
        sub_payload.update({"signal_id": signal_id})
        logger.info("sub_payload is %s" % sub_payload)
        signal_model, error = SignalModel.objects.create(filename=filenameUpdate,
                                                         partable_id=partable_id,
                                                         timetable_id=timetable_id,
                                                         aisdata_id=aisdata_id,
                                                         signal_id=signal_id,
                                                         snr=snr
                                                         )
        if not signal_model:
            return control_response(code=ModuErrorCode.SIGNAL_SAVED_FAILED, msg=error, ret_name_id="signal_id")
        # matlab_create_aisSig.apply_async([sub_payload])
        signal_id_list.append(signal_id)
    return control_response(code=0,
                            msg="signal running",
                            ret_set=[signal_id_list],
                            ret_name_id="signal_id",
                            total_count=packagenum)
示例#4
0
    def ActionRouter(self):
        payload = self.payload
        action = payload.get("action", None)
        demodSignal_id = payload.get("demodsignal_id", None)

        checkprob_model, error = CheckProbModel(demodSignal_id=demodSignal_id)
        if not checkprob_model:
            return control_response(
                code=CheckProbErrorCode.CHEKPROB_SAVE_FAILED, msg=error)

        if action == "checkprob":
            sub_payload = {"demodSignal_id": demodSignal_id, "action": action}
            CheckProb.apply_async([sub_payload])
        return control_response(code=0, msg="checkprob is running!")
示例#5
0
    def Ant_select(self):
        """
        选择解调的天线类型
        :return:
        """
        payload = self.payload
        ant_type = payload.get("ant_type")
        signal_id = payload.get("signal_id")
        protocol = payload.get("protocol")
        sync_type = payload.get("sync_type")
        logger.info("payload is %s" % payload)
        demod_model, error = DemodModel.objects.create(signal_id=signal_id,
                                                       ant_type=ant_type,
                                                       protocol=protocol,
                                                       sync_type=sync_type)
        if not demod_model:
            return control_response(code=DemodErrorCode.DEMOD_SAVE_FAILED, msg=error)

        if not isinstance(ant_type, list):
            ant_type = [ant_type]

        for key_ant_type in ant_type:

            if key_ant_type == "single_ant":
                sub_payload = {
                    "signal_id": signal_id,
                    "protocol": protocol,
                    "sync_type": sync_type

                }
                logger.info("The sub_payload is %s" % sub_payload)

                Demode_single_ant.apply_async([sub_payload])

            if key_ant_type == "douoble_ant":
                sub_payload = {
                    "signal_id": signal_id,
                    "protocol": protocol,
                    "sync_type": sync_type
                }
                Demode_double_ant.apply_async([sub_payload])

            if key_ant_type == "four_ant":
                sub_payload = {
                    "signal_id": signal_id,
                    "protocol": protocol,
                    "sync_type": sync_type
                }
                Demode_four_ant.apply_async([sub_payload])
        return control_response(code=0, msg="Demod is running!")
示例#6
0
    def post(self, request, *args, **kwargs):
        """
        接受post请求数据并处理
        :param request:
        :param args:
        :param kwargs:
        :return:
        """
        req_data = request.data
        logger.info(req_data)
        validator = CheckProbSerializer(data=req_data)
        logger.info("validator is valid: %s" % validator.is_valid())
        if not validator.is_valid():
            code, msg = control_code(validator)
            logger.error(str(validator.errors))
            return Response(control_response(code=code, msg=msg),
                            status=status.HTTP_200_OK)

        action = validator.validated_data.get("action", "checkprob")
        demodSignal_id = validator.validated_data.get("demodSignal_id", None)

        payload = {"demodSignal_id": demodSignal_id, "action": action}
        logger.info("The main payload is %s" % payload)
        router = Router(payload)
        resp = router.ActionRouter()

        return Response(resp, status=status.HTTP_200_OK)
示例#7
0
    def post(self, request, *args, **kwargs):
        """
        接受post请求数据并处理
        :param request:
        :param args:
        :param kwargs:
        :return:
        """
        req_data = request.data
        logger.info(req_data)
        validator = CheckProbSerializer(data=req_data)
        logger.info("validator is valid: %s" % validator.is_valid())
        if not validator.is_valid():
            code, msg = control_code(validator)
            logger.error(str(validator.errors))
            return Response(control_response(code=code, msg=msg),
                            status=status.HTTP_200_OK)

        action = validator.validated_data.get("action", "checkprob")
        demodSignal_id = validator.validated_data.get("demodSignal_id", None)


        payload = {
            "demodSignal_id": demodSignal_id,
            "action": action
        }
        logger.info("The main payload is %s" % payload)
        router = Router(payload)
        resp = router.ActionRouter()

        return Response(resp, status=status.HTTP_200_OK)
示例#8
0
    def post(self, request, *args, **kwargs):
        """
        接受post请求数据并处理
        :param request:
        :param args:
        :param kwargs:
        :return:
        """
        req_data = request.data
        logger.info(req_data)
        validator = DemodSignalSerializer(data=req_data)
        logger.info("validator is valid: %s" % validator.is_valid())
        if not validator.is_valid():
            code, msg = control_code(validator)
            logger.error(str(validator.errors))
            return Response(control_response(code=code, msg=msg),
                            status=status.HTTP_200_OK)

        signal_id = validator.validated_data.get("signal_id", None)
        ant_type = validator.validated_data.get("ant_type", "single_ant")
        protocol = validator.validated_data.get("protocol", "SOTDMA")
        sync_type = validator.validated_data.get("sync_type", "DEFAULT")

        payload = {
            "signal_id": signal_id,
            "ant_type": ant_type,
            "protocol": protocol,
            "sync_type": sync_type
        }
        logger.info("The main payload is %s" % payload)
        router = Router(payload)
        resp = router.Ant_select()

        return Response(resp, status=status.HTTP_200_OK)
示例#9
0
    def ActionRouter(self):
        payload = self.payload
        action = payload.get("action", None)
        demodSignal_id = payload.get("demodsignal_id", None)

        checkprob_model, error = CheckProbModel(demodSignal_id=demodSignal_id)
        if not checkprob_model:
            return control_response(code=CheckProbErrorCode.CHEKPROB_SAVE_FAILED, msg = error)

        if action == "checkprob":
            sub_payload = {
                "demodSignal_id": demodSignal_id,
                "action": action
            }
            CheckProb.apply_async([sub_payload])
        return control_response(code=0, msg="checkprob is running!")
示例#10
0
def CreatePartable(payload):
    """
    :payload: 创建信号所需数据
    :return:
    """
    action = payload.get("action", None)
    filename = payload.get("filename", None)
    packagenum = payload.get("packagenum", None)
    height = payload.get("height", None)
    vesnum = payload.get("vesnum", None)
    ant_pitch = payload.get("ant_pitch", None)
    ant_azimuth = payload.get("ant_azimuth", None)
    antenna_type = payload.get("ant_type", None)
    channel_type = payload.get("channel_type", None)
    distri_id = payload.get("distri_id", None)

    if distri_id is None:
        return control_response(code=ModuErrorCode.DISTRI_ID_MISSING,
                                msg="distri_id is needed!")

    sub_payload = {
        "action": action,
        "filename": filename + '_' + action,
        "packagenum": packagenum,
        "height": height,
        "vesnum": vesnum,
        "ant_pitch": ant_pitch,
        "ant_azimuth": ant_azimuth,
        "antenna_type": antenna_type,
        "channel_type": channel_type,
        "distri_id": distri_id,
    }
    ret_message = create_ves_parTalb(sub_payload)
    return ret_message
示例#11
0
def CreateTimetable(payload):
    """
    :return:
    """
    # payload = self.payload
    action = payload.get("action", None)
    filename = payload.get("filename", None)
    packagenum = payload.get("filename", None)
    obtime = payload.get("obtime", None)
    height = payload.get("height", None)
    protocol = payload.get("protocol", None)
    distri_id = payload.get("distri_id", None)
    partable_id = payload.get("partable_id", None)
    if partable_id is None:
        return control_response(code=ModuErrorCode.PARTABLE_ID_MISSING,
                                msg="partable_id is needed!")
    if distri_id is None:
        distri_id = DistriModel.get_distriid_by_id(partable_id)

    sub_payload = {
        "action": action,
        "filename": filename + '_' + action,
        "packagenum": packagenum,
        "obtime": obtime,
        "height": height,
        "protocol": protocol,
        "distri_id": distri_id,
        "partable_id": partable_id,
    }
    ret_message = create_time_table(sub_payload)
    return ret_message
示例#12
0
    def Actionrouter(self):
        """
        :param payload: 获取action
        :return:
        """
        payload = self.payload
        action = payload.get("action", None)
        if action is not None:
            logger.info("Current action is: %s" % action)
            ret_message = self.ACTION[action](payload)
            return ret_message

        action_all = payload.get("action_all", None)
        if action_all is True:
            ret = {}
            for action in self.ACTION_LIST:
                payload.update({"action": action})
                if action is not None:
                    logger.info("Current action is: %s" % action)
                    ret_message = self.ACTION[action](payload)
                    payload.update({
                        ret_message["ret_name_id"]:
                        ret_message["ret_set"][0]
                    })
                    ret.update(ret_message)
            return ret
        return control_response(code=ModuErrorCode.ACTION_GET_FAILED,
                                msg="action 获取失败")
示例#13
0
def CreateAisdata(payload):
    """
    :param payload: 创建所需信号
    :return:
    """
    # payload = self.payload
    action = payload.get("action", None)
    filename = payload.get("filename", None)
    packagenum = payload.get("packagenum", None)
    distri_id = payload.get("distri_id", None)
    timetable_id = payload.get("timetable_id", None)

    if timetable_id is None:
        return control_response(code=ModuErrorCode.TIMETABLE_ID_MISSING,
                                msg="timetable_id is needed!")
    if distri_id is None:
        partable_id = PartableModel.get_partableid_by_id(timetable_id)
        distri_id = DistriModel.get_distriid_by_id(partable_id)
    sub_payload = {
        "action": action,
        "filename": filename + '_' + action,
        "packagenum": packagenum,
        "distri_id": distri_id,
        "timetable_id": timetable_id,
    }
    ret_message = create_ves_data(sub_payload)
    return ret_message
示例#14
0
def create_ves_distri(payload):
    """
    产生船舶分布矩阵
    :param payload:包含需要产生船舶分布信息的参数
    :return:
    """
    action = payload.get("action", None)
    lon = payload.get("lon", None)
    lat = payload.get("lat", None)
    height = payload.get("height", None)
    vesNum = payload.get("vesnum", None)
    distri_mode = payload.get("distri_mode", None)
    username = payload.get("owner", None)
    distri_id = make_id(action)


    sub_payload = {
        "action": action,
        "lon": lon,
        "lat": lat,
        "height": height,
        "vesNum": vesNum,
        "distri_mode": distri_mode,
        "distri_id": distri_id,
        "owner": username
    }
    distri_model, error = DistriModel.objects.create(user=username,
                                                       distri_id=distri_id,
                                                       distri_lon=lon,
                                                       distri_lat=lat,
                                                       distri_height=height,
                                                       distri_ves_num=vesNum,
                                                       distri_mode=distri_mode
                                                       )
    if not distri_model:
        return control_response(code=ModuErrorCode.DISTRI_SAVED_FAILED, msg=error, ret_name_id="distri_id")
    # matlab_create_ves_distri.apply_async([sub_payload])
    return control_response(code=0, msg="distri running", ret_set=[distri_id], ret_name_id="distri_id")
示例#15
0
def create_ves_parTalb(payload):
    """
    产生船舶功率频偏时延DOA参数
    :param payload:包含需要产生船舶分布信息的参数
    :return: parTable_id 船舶参数矩阵的id
    """
    action = payload.get("action", None)
    height = payload.get("height", None)
    vesnum = payload.get("vesnum", None)
    ant_pitch = payload.get("ant_pitch", None)
    ant_azimuth = payload.get("ant_azimuth", None)
    antenna_type = payload.get("antenna_type", None)
    channel_type = payload.get("channel_type", None)
    distri_id = payload.get("distri_id", None)
    partable_id = make_id(action)
    sub_payload = {
        "action": action,
        "height": height,
        "vesnum": vesnum,
        "ant_pitch": ant_pitch,
        "ant_azimuth": ant_azimuth,
        "antenna_type": antenna_type,
        "channel_type": channel_type,
        "distri_id": distri_id,
        "partable_id": partable_id
    }
    parTable_model, error = PartableModel.objects.create(distri_id=distri_id,
                                                         partable_id=partable_id,
                                                         pitch=ant_pitch,
                                                         azimuth=ant_azimuth,
                                                         antenna_type=antenna_type,
                                                         channel_type=channel_type
                                                         )
    if not parTable_model:
        return control_response(code=ModuErrorCode.PARTABLE_SAVED_FAILED, msg=error, ret_name_id="partable_id")
    # matlab_create_ves_parTable.apply_async([sub_payload])
    return control_response(code=0, msg="parTable running", ret_set=[partable_id], ret_name_id="partable_id")
示例#16
0
def CreateSignal(payload):
    """
    产生AIS信号
    :param payload: 包含必要的关于产生timetable的参数
    :return: aisSig_Path 存储AISSig的路径
    """
    action = payload.get("action", None)
    filename = payload.get("filename", None)
    packagenum = payload.get("packagenum", None)
    obtime = payload.get("obtime", None)
    vesnum = payload.get("vesnum", None)
    height = payload.get("height", None)
    partable_id = payload.get("partable_id", None)
    timetable_id = payload.get("timetable_id", None)
    aisdata_id = payload.get("aisdata_id", None)
    snr = payload.get("snr")
    if aisdata_id is None:
        return control_response(code=ModuErrorCode.AISDATA_ID_MISSING,
                                msg="aisdata_id is needed!")
    if timetable_id is None:
        timetable_id = TimetableModel.get_timetableid_by_id(aisdata_id)
    if partable_id is None:
        partable_id = PartableModel.get_partableid_by_id(timetable_id)
    sub_payload = {
        "action": action,
        "filename": filename + '_' + action,
        "packagenum": packagenum,
        "obtime": obtime,
        "vesnum": vesnum,
        "height": height,
        "partable_id": partable_id,
        "timetable_id": timetable_id,
        "aisdata_id": aisdata_id,
        "snr": snr
    }
    ret_message = create_aissig(sub_payload)
    return ret_message
示例#17
0
    def post(self, request, *args, **kwargs):
        req_data = request.data
        logger.info(req_data)
        # logger.info(get_path.MATLAB_FILE_PATH)
        # logger.info(get_path.CELERY_PATH)
        # logger.info(get_path.CURRENT_PATH)
        # logger.info("filename is %s" % SignalModel.get_signal_by_id("signal-h7aiwz4v").filename)
        validator = CreateSignalSerializer(data=req_data)
        logger.info("validator is valid: %s" % validator.is_valid())
        if not validator.is_valid():
            code, msg = control_code(validator)
            logger.error(str(validator.errors))
            return Response(control_response(code=code, msg=msg),
                            status=status.HTTP_200_OK)

        filename = validator.validated_data.get("filename", None)
        packagenum = validator.validated_data.get("packagenum", 1)
        action_all = validator.validated_data.get("action_all", True)
        action = validator.validated_data.get("action", None)
        lon = validator.validated_data.get("lon", 102.0)
        lat = validator.validated_data.get("lat", 31.8029)
        height = validator.validated_data.get("height", 600)
        vesnum = validator.validated_data.get("vesnum", 500)
        obtime = validator.validated_data.get("obtime", 60)
        ant_pitch = validator.validated_data.get("ant_pitch", 0)
        ant_azimuth = validator.validated_data.get("ant_azimuth", 0)
        ant_type = validator.validated_data.get("ant_type", "yagi")
        channel_tpye = validator.validated_data.get("channel_type", "free space loss")
        protocol = validator.validated_data.get("protocol", "SOTDMA")
        snr = validator.validated_data.get("snr", 0)
        distri_mode = validator.validated_data.get("distri_mode", "random")
        distri_id = validator.validated_data.get("distri_id", None)
        partable_id = validator.validated_data.get("partable_id", None)
        timetable_id = validator.validated_data.get("timetable_id", None)
        aisdata_id = validator.validated_data.get("aisdata_id", None)
        signal_id = validator.validated_data.get("signal_id", None)
        owner = user_temp()

        payload = {
            # "action": self.action,
            "filename": filename,
            "packagenum": packagenum,
            "action_all": action_all,
            "action": action,
            "owner": owner,
            "lon": lon,
            "lat": lat,
            "height": height,
            "vesnum": vesnum,
            "obtime": obtime,
            "ant_pitch": ant_pitch,
            "ant_azimuth": ant_azimuth,
            "ant_type": ant_type,
            "channel_type": channel_tpye,
            "protocol": protocol,
            "snr": snr,
            "distri_mode": distri_mode,
            "distri_id": distri_id,
            "partable_id": partable_id,
            "timetable_id": timetable_id,
            "aisdata_id": aisdata_id,
            "signal_id": signal_id
        }

        logger.info("The main payload is %s" % payload)
        route = Router(payload)
        resp = route.Actionrouter()
        return Response(resp, status=status.HTTP_200_OK)