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")
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")
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)
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!")
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!")
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)
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)
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)
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!")
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
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
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 获取失败")
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
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")
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")
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
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)