Knight KE / Mbed OS Game_Master
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         SUPPORTED_FEATURE_END_MARK // must be last element in the array of features
00054     };
00055     static void set_unsupported_features(const SupportedFeature *unsupported_features);
00056 
00057 protected:
00058     ATHandler &_at;
00059 
00060     /** Check if some functionality is supported by a cellular module. For example,
00061      *  most of standard AT commands are optional and not implemented by all cellular modules.
00062      *
00063      *  @param feature  check for feature to support
00064      *  @return         true on supported, otherwise false
00065      */
00066     static const SupportedFeature *_unsupported_features;
00067     static bool is_supported(SupportedFeature feature);
00068 };
00069 
00070 } // namespace mbed
00071 
00072 #endif /* AT_CELLULAR_BASE_H_ */