예제 #1
0
        public HttpResponseMessage AddOffsets([FromBody] List <OffsetRequest> offsets)
        {
            Logger log = LogManager.GetCurrentClassLogger();

            log.Info("Received FSUIPC add offsets call");

            if (FSPFSUIPCConnection.IsOpen)
            {
                if (offsets != null)
                {
                    if (offsets.Count() > 0)
                    {
                        try
                        {
                            string group = offsets.First().DataGroup;

                            foreach (OffsetRequest req in offsets)
                            {
                                log.Debug("Add Offset: {0}, Type: {1}, Group: {2}", req.Address, req.DataType, req.DataGroup);
                                FSPFSUIPCConnection.AddOffset(req.Address, req.DataType, req.DataGroup);
                            }

                            HttpResponseMessage response = ReadOffsets(group);

                            return(response);
                        }
                        catch (Exception ex)
                        {
                            return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Exception Gettig values",
                                                               ex));
                        }
                    }
                    else
                    {
                        return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Empty offset list"));
                    }
                }
                else
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Empty or bad formatted offset list"));
                }
            }
            else
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "FSUIPC Connection is not opened!"));
            }
        }
        public HttpResponseMessage OpenPost([FromBody] FSUIPCConnect value)
        {
            Logger log = LogManager.GetCurrentClassLogger();

            try
            {
                log.Info("Received OpenFSUIPC Connection call");
                ConnectResponse resp = new ConnectResponse();

                if (FSPFSUIPCConnection.IsOpen)
                {
                    log.Info("Connection already is open");
                    resp.Message = "Connection Opened";
                }
                else
                {
                    log.Info("Opening connection..");

                    FSPFSUIPCConnection.Open();
                    resp.Message = "Connection Opened";
                }

                FSPFSUIPCConnection.AddOffset(15616, Datatype.String, "Connect");
                FSPOffset      _offset = FSPFSUIPCConnection.Process("Connect").First();
                OffsetResponse _resp   = OffsetHelpers.setOffsetResponse(_offset);

                resp.Version = FSPServerV2.Library.Properties.Version.getVersion();

                resp.Simulator = FSPFSUIPCConnection.FlightSimVersionConnected.ToString();
                resp.Aircraft  = _resp.Value;

                return(Request.CreateResponse(HttpStatusCode.OK, resp));
            }
            catch (Exception ee)
            {
                Console.WriteLine(ee.Message);
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Connection Error", ee));
                //return Request.CreateResponse(HttpStatusCode.OK, "error: " + ee.Message);
            }
        }