#include <stdio.h>
#define CONC_AT_CMD(A, B, C, D) A B C D
/* AT Head */
#define AT_HEAD "AT"
#define AT_HEAD_SIZE 2
#define AT_CMS_HEAD_CMD_PLUS "+"
#define AT_CMS_EQUAL "="
#define AT_CMS_SEMI ","
#define AT_CMS_RESPONS_COLON ":"
#define AT_CMS_TEST "?"
#define AT_CMS_END_CMD "\r"
#define AT_CMS_START_END_RESP "\r\n"
/* AT success execution */
#define AT_CMS_OK "\r\rOK\r\n"
/* AT command names*/
#define AT_CREATE_SOCKET "USOCR"
#define AT_SET_SOCKET_OPTION "USOSO"
#define AT_GET_SOCKET OPTION "USOGO"
#define AT_CLOSE_SOCKET "USOCL"
#define AT_GET_SOCKET_ERROR "USOER"
#define AT_CONNECT_SOCKET "USOCO"
#define AT_WRITE_SOCKET_DATA "USOWR"
#define AT_READ_SOCKET_DATA "USORD"
#define AT_WRITE_SOCKET_DATA_UDP "USOST"
#define AT_READ_SOCKET_UDP "USORF"
#define AT_SET_LISTENING_SOCKET "USOLI"
#define AT_SOCKET_CONTROL "USOCTL"
/* AT execution commands */
#define AT_CMD_CREATE_SOCKET AT_HEAD AT_CREATE_SOCKET AT_CMS_END_CMD
int main(void) {
printf("%s", CONC_AT_CMD
(AT_HEAD
, AT_CMS_HEAD_CMD_PLUS
, AT_CREATE_SOCKET
, AT_CMS_EQUAL
)); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIENPTkNfQVRfQ01EKEEsIEIsIEMsIEQpICAgICBBIEIgQyBECgovKiBBVCBIZWFkICovCiNkZWZpbmUgQVRfSEVBRCAgICAgICAgICAgICAgICAgICAgICAgICAiQVQiCiNkZWZpbmUgQVRfSEVBRF9TSVpFICAgICAgICAgICAgICAgICAgICAyCgojZGVmaW5lIEFUX0NNU19IRUFEX0NNRF9QTFVTICAgICAgICAgICAgIisiCiNkZWZpbmUgQVRfQ01TX0VRVUFMICAgICAgICAgICAgICAgICAgICAiPSIKI2RlZmluZSBBVF9DTVNfU0VNSSAgICAgICAgICAgICAgICAgICAgICIsIgojZGVmaW5lIEFUX0NNU19SRVNQT05TX0NPTE9OICAgICAgICAgICAgIjoiCiNkZWZpbmUgQVRfQ01TX1RFU1QgICAgICAgICAgICAgICAgICAgICAiPyIKCiNkZWZpbmUgQVRfQ01TX0VORF9DTUQgICAgICAgICAgICAgICAgICAiXHIiCiNkZWZpbmUgQVRfQ01TX1NUQVJUX0VORF9SRVNQICAgICAgICAgICAiXHJcbiIKLyogQVQgc3VjY2VzcyBleGVjdXRpb24gKi8KI2RlZmluZSBBVF9DTVNfT0sgICAgICAgICAgICAgICAgICAgICAgICJcclxyT0tcclxuIgoKLyogQVQgY29tbWFuZCBuYW1lcyovCiNkZWZpbmUgQVRfQ1JFQVRFX1NPQ0tFVCAgICAgICAgICAgICJVU09DUiIKI2RlZmluZSBBVF9TRVRfU09DS0VUX09QVElPTiAgICAgICAgIlVTT1NPIgojZGVmaW5lIEFUX0dFVF9TT0NLRVQgT1BUSU9OICAgICAgICAiVVNPR08iCiNkZWZpbmUgQVRfQ0xPU0VfU09DS0VUICAgICAgICAgICAgICJVU09DTCIKI2RlZmluZSBBVF9HRVRfU09DS0VUX0VSUk9SICAgICAgICAgIlVTT0VSIgojZGVmaW5lIEFUX0NPTk5FQ1RfU09DS0VUICAgICAgICAgICAiVVNPQ08iCiNkZWZpbmUgQVRfV1JJVEVfU09DS0VUX0RBVEEgICAgICAgICJVU09XUiIKI2RlZmluZSBBVF9SRUFEX1NPQ0tFVF9EQVRBICAgICAgICAgIlVTT1JEIgojZGVmaW5lIEFUX1dSSVRFX1NPQ0tFVF9EQVRBX1VEUCAgICAiVVNPU1QiCiNkZWZpbmUgQVRfUkVBRF9TT0NLRVRfVURQICAgICAgICAgICJVU09SRiIKI2RlZmluZSBBVF9TRVRfTElTVEVOSU5HX1NPQ0tFVCAgICAgIlVTT0xJIgojZGVmaW5lIEFUX1NPQ0tFVF9DT05UUk9MICAgICAgICAgICAiVVNPQ1RMIgoKLyogQVQgZXhlY3V0aW9uIGNvbW1hbmRzICovCiNkZWZpbmUgQVRfQ01EX0NSRUFURV9TT0NLRVQgICAgICAgICAgICBBVF9IRUFEIEFUX0NSRUFURV9TT0NLRVQgQVRfQ01TX0VORF9DTUQKCmludCBtYWluKHZvaWQpIHsKCXByaW50ZigiJXMiLCBDT05DX0FUX0NNRChBVF9IRUFELCBBVF9DTVNfSEVBRF9DTURfUExVUywgQVRfQ1JFQVRFX1NPQ0tFVCwgQVRfQ01TX0VRVUFMKSk7CglyZXR1cm4gMDsKfQo=