GPS fixes and GPS soft serial support

Added possibility to use both Serial RX (Spektrum satellite/SBUS/SUMD) and GPS at the same time.
- When features: feature SERIALRX, feature SOFTSERIAL and feature GPS are enabled Serial RX is using UART and pins 3&4 and GPS is using soft serial and pins 5&6.
- Fixed GPS code, so that now it's reconnecting if connection to GPS is lost.
- GPS tab on Chrome Configurator now shows GPS signal strength.
- Possibility to disable SBAS (ground assistace type). (SBAS causes occasional severe altitude calcuation errors)
I'm pretty sure once you init a serialPort instance to be softserial, it
uses same API as serial but "just works".

On Mon, Nov 24, 2014 at 8:54 PM, Jaakko Haavisto <notifications@github.com>
wrote:

> In src/gps.c:
>
> > @@ -116,6 +122,14 @@ static void gpsNewData(uint16_t c);
> >  static bool gpsNewFrameNMEA(char c);
> >  static bool gpsNewFrameUBLOX(uint8_t data);
> >
> > +// To simplify GPS code using serial and soft serial function calls we use these pointers
> > +static void (*gps_serialSetBaudRate)(serialPort_t *instance, uint32_t baudRate);
> > +static bool (*gps_isSerialTransmitBufferEmpty)(serialPort_t *instance);
> > +static void (*gps_serialPrint)(serialPort_t *instance, const char *str);
> > +static void (*gps_serialWrite)(serialPort_t *instance, uint8_t ch);
> > +static uint8_t (*gps_serialTotalBytesWaiting)(serialPort_t *instance);
> > +static uint8_t (*gps_serialRead)(serialPort_t *instance);
> > +
>
> I'll check this one. (I didn't even know that there was struct
> serialPortVTable under normal serial driver.)
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/multiwii/baseflight/pull/206/files#r20785352>.
>