Kev Mann / mbed-dev-OS5_10_4
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers AT_CellularBase.h Source File

AT_CellularBase.h

00001 /*
00002  * Copyright (c) 2017, Arm Limited and affiliates.
00003  * SPDX-License-Identifier: Apache-2.0
00004  *
00005  * Licensed under the Apache License, Version 2.0 (the "License");
00006  * you may not use this file except in compliance with the License.
00007  * You may obtain a copy of the License at
00008  *
00009  *     http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 #ifndef AT_CELLULAR_BASE_H_
00018 #define AT_CELLULAR_BASE_H_
00019 
00020 #include "ATHandler.h"
00021 
00022 namespace mbed {
00023 
00024 /**
00025  *  Class AT_CellularBase
00026  *
00027  *  A base class for AT-classes.
00028  */
00029 class AT_CellularBase {
00030 public:
00031     AT_CellularBase(ATHandler &at);
00032 
00033     /** Getter for at handler. Common method for all AT-classes.
00034      *
00035      *  @return reference to ATHandler
00036      */
00037     ATHandler &get_at_handler();
00038 
00039     /** Gets the device error that happened when using AT commands/responses. This is at error
00040      *  returned by the device. Returned CME/CMS errors can be found from 3gpp documents 27007 and 27005.
00041      *
00042      *  @return at error (CME/CMS) while communicating with the device
00043      */
00044     device_err_t get_device_error() const;
00045 
00046     /** Cellular module need to define an array of unsupported features if any,
00047      *  by default all features are supported.
00048      *
00049      *  @param features Array of type SupportedFeature with last element FEATURE_END_MARK
00050      */
00051     enum SupportedFeature {
00052         AT_CGSN_WITH_TYPE, // AT+CGSN without type is likely always supported similar to AT+GSN
00053         AT_CGDATA, // alternative is to support only ATD*99***<cid>#
00054         AT_CGAUTH, // APN authentication AT commands supported
00055         SUPPORTED_FEATURE_END_MARK // must be last element in the array of features
00056     };
00057     static void set_unsupported_features(const SupportedFeature *unsupported_features);
00058 
00059 protected:
00060     ATHandler &_at;
00061 
00062     /** Check if some functionality is supported by a cellular module. For example,
00063      *  most of standard AT commands are optional and not implemented by all cellular modules.
00064      *
00065      *  @param feature  check for feature to support
00066      *  @return         true on supported, otherwise false
00067      */
00068     static const SupportedFeature *_unsupported_features;
00069     static bool is_supported(SupportedFeature feature);
00070 };
00071 
00072 } // namespace mbed
00073 
00074 #endif /* AT_CELLULAR_BASE_H_ */