Query the darwin webservice to obtain a board for a particular station
        and return a StationBoard instance

        Positional arguments:
        crs -- the three letter CRS code of a UK station

        Keyword arguments:
        rows -- the number of rows to retrieve (default 10)
        include_departures -- include departing services in the departure board
        (default True)
        include_arrivals -- include arriving services in the departure board
        (default False)
        destination_crs -- filter results so they only include services
        calling at a particular destination (default None)
        origin_crs -- filter results so they only include services
        originating from a particular station (default None)

def get_station_board(
        self,
        crs,
        rows=17,
        include_departures=True,
        include_arrivals=False,
        destination_crs=None,
        origin_crs=None
    ):
        """
        Query the darwin webservice to obtain a board for a particular station
        and return a StationBoard instance

        Positional arguments:
        crs -- the three letter CRS code of a UK station

        Keyword arguments:
        rows -- the number of rows to retrieve (default 10)
        include_departures -- include departing services in the departure board
        (default True)
        include_arrivals -- include arriving services in the departure board
        (default False)
        destination_crs -- filter results so they only include services
        calling at a particular destination (default None)
        origin_crs -- filter results so they only include services
        originating from a particular station (default None)
        """
        # Determine the darwn query we want to make
        if include_departures and include_arrivals:
            query_type = 'GetArrivalDepartureBoard'
        elif include_departures:
            query_type = 'GetDepartureBoard'
        elif include_arrivals:
            query_type = 'GetArrivalBoard'
        else:
            raise ValueError(
                "get_station_board must have either include_departures or \
include_arrivals set to True"
            )
        # build a query function
        q = partial(self._base_query()[query_type], crs=crs, numRows=rows)
        if destination_crs:
            if origin_crs:
                log.warn(
                    "Station board query can only filter on one of \
destination_crs and origin_crs, using only destination_crs"
                )
            q = partial(q, filterCrs=destination_crs, filterType='to')
        elif origin_crs:
            q = partial(q, filterCrs=origin_crs, filterType='from')
        try:
            soap_response = q()
        except WebFault:
            raise WebServiceError
        return StationBoard(soap_response)