michael
michael

Reputation: 3290

Windows Mobile 6 AT commands

I'm trying to get CellID using AT commands, but I dont get any response from the modem, mine code looks like below, I send AT+CCED command, but never get any response.

HANDLE hCom;
char * xpos;
char rsltstr[5];
DWORD returnValue;
DWORD LAC;
DWORD CellId;
int bufpos;
DCB dcb;
COMMTIMEOUTS to;
DWORD nWritten;
DWORD event;
DWORD nRead;
char outbuf[20], buf[256];

hCom = CreateFile(L"\\\.\\COM9:",GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING,0,0);
if (hCom==NULL || hCom==INVALID_HANDLE_VALUE)
{
    TCHAR szBuf[80];
    DWORD dw = GetLastError();

    // get the most uptodate cells
    _stprintf(szBuf, TEXT("CreateFile failed with error %d."), dw);

    MessageBox(0, szBuf, TEXT("Error"), MB_OK);

    hCom= NULL;
    return -1;
}

if (!GetCommState(hCom, &dcb))
{
    return -2;
}

dcb.BaudRate= CBR_115200;
dcb.ByteSize= 8;
dcb.fParity= false;
dcb.StopBits= ONESTOPBIT;

if (!SetCommState(hCom, &dcb))
{
    return -3;
}

if (!EscapeCommFunction(hCom, SETDTR))
{
    return -4;
}

if (!GetCommTimeouts(hCom, &to))
{
    return -6;
}
to.ReadIntervalTimeout= 0;
to.ReadTotalTimeoutConstant= 200;
to.ReadTotalTimeoutMultiplier= 0;
to.WriteTotalTimeoutConstant= 20000;
to.WriteTotalTimeoutMultiplier= 0;
if (!SetCommTimeouts(hCom, &to))
{
    return -7;
}

if (!SetCommMask(hCom, EV_RXCHAR))
{
    return -8;
}   

bufpos = 0;

strcpy(outbuf,"AT+CCED=0,5\r"); 

if (!WriteFile(hCom, outbuf, strlen(outbuf), &nWritten, NULL))
{
    return -10;
}

if (nWritten != strlen(outbuf))
{
    return -11;
}

if (!WaitCommEvent(hCom, &event, NULL))
{
    return -12;
}

while(1)
{
    if (!ReadFile(hCom, buf+bufpos, 256 - bufpos, &nRead, NULL))
    {
        return -13;
    }

    if (nRead == 0) // <---- it alweys break here
        break;


    bufpos += nRead;


    if (bufpos >= 256)
        break;


}

Upvotes: 1

Views: 4714

Answers (4)

Boogaloo
Boogaloo

Reputation: 101

Apparently I am not allowed to comment.. so: @Sebastian: I run Ril_GetCellTowerInfo on 2 models of HTC Diamond + an HTC Touch Pro + an ATT Fuze. It works on all 4 phones. I'd be happy to share some working code (in VB.NET) if you need more help.

Upvotes: 1

atzz
atzz

Reputation: 18010

First of all, try L"COM9:" for the first parameter of CreateFile.

Check out this page: Device File Names

Upvotes: 2

michael
michael

Reputation: 3290

my problem is that on some devicec RIL iterface methods returns E_NOTIMPL and nothing works, so I tought that I could directly tolk with mobile modem with AT commands.

Does anyone have solution to such a problem, I'm fighting with it for over a week now.

Upvotes: 1

Shane Powell
Shane Powell

Reputation: 14148

I don't know anything about using the AT commands to get the cell id but you can use the RIL interface to get the cell id. It may be simpler than using the AT commands (unless you are trying to get it remotely?)

http://msdn.microsoft.com/en-us/library/ms890075.aspx

You use the RIL_GetCellTowerInfo function to get the current cell tower id.

Upvotes: 1

Related Questions