#include #include #include #include "eos.h" #include "net.h" #include "cell.h" void eos_cell_pdp_handler(unsigned char mtype, unsigned char *buffer, uint16_t buf_len) { switch (mtype) { case EOS_CELL_MTYPE_PDP_SET_APN: case EOS_CELL_MTYPE_PDP_SET_USR: case EOS_CELL_MTYPE_PDP_SET_PWD: { char *arg; buffer++; buf_len--; arg = (char *)buffer; if (buf_len > EOS_CELL_PDP_SIZE_ARG) break; buffer[buf_len] = '\0'; switch (mtype) { case EOS_CELL_MTYPE_PDP_SET_APN: { eos_ppp_set_apn(arg); break; } case EOS_CELL_MTYPE_PDP_SET_USR: { eos_ppp_set_usr(arg); break; } case EOS_CELL_MTYPE_PDP_SET_PWD: { eos_ppp_set_pwd(arg); break; } } break; } case EOS_CELL_MTYPE_PDP_GET_APN: case EOS_CELL_MTYPE_PDP_GET_USR: case EOS_CELL_MTYPE_PDP_GET_PWD: { char *arg; buffer[0] = EOS_CELL_MTYPE_PDP | mtype; arg = (char *)(buffer + 1); switch (mtype) { case EOS_CELL_MTYPE_PDP_GET_APN: { eos_ppp_get_apn(arg); break; } case EOS_CELL_MTYPE_PDP_GET_USR: { eos_ppp_get_usr(arg); break; } case EOS_CELL_MTYPE_PDP_GET_PWD: { eos_ppp_get_pwd(arg); break; } } eos_net_reply(EOS_NET_MTYPE_CELL, buffer, strlen(arg) + 1); break; } case EOS_CELL_MTYPE_PDP_CONNECT: { eos_ppp_connect(); break; } case EOS_CELL_MTYPE_PDP_DISCONNECT: { eos_ppp_disconnect(); break; } } }