О деактивации форума Eltex
Уважаемые коллеги! В связи с потерей актуальности данного ресурса, нами было принято решение о частичной деактивации форума Eltex. Мы отключили функции регистрации и создания новых тем, а также возможность оставлять сообщения. Форум продолжит работу в "режиме чтения", так как за долгие годы работы здесь накопилось много полезной информации и ответов на часто встречающиеся вопросы.
Мы активно развиваем другие каналы коммуникаций, которые позволяют более оперативно и адресно консультировать наших клиентов. Если у вас возникли вопросы по работе оборудования, вы можете обратиться в техническую поддержку Eltex, воспользовавшись формой обращения на сайте компании или оставить заявку в системе Service Desk. По иным вопросам проконсультируют наши менеджеры коммерческого отдела: eltex@eltex-co.ru.
Уважаемые коллеги! В связи с потерей актуальности данного ресурса, нами было принято решение о частичной деактивации форума Eltex. Мы отключили функции регистрации и создания новых тем, а также возможность оставлять сообщения. Форум продолжит работу в "режиме чтения", так как за долгие годы работы здесь накопилось много полезной информации и ответов на часто встречающиеся вопросы.
Мы активно развиваем другие каналы коммуникаций, которые позволяют более оперативно и адресно консультировать наших клиентов. Если у вас возникли вопросы по работе оборудования, вы можете обратиться в техническую поддержку Eltex, воспользовавшись формой обращения на сайте компании или оставить заявку в системе Service Desk. По иным вопросам проконсультируют наши менеджеры коммерческого отдела: eltex@eltex-co.ru.
Cтруктура описании ленты
Cтруктура описании ленты
Здравствуйте, всем! Можете предоставить структуру описании ленты(записи) трафика станции МС-240.
-
- Сообщения: 321
- Зарегистрирован: 13 янв 2005 20:45
- Reputation: 0
- Откуда: Компания Элтекс
- Контактная информация:
Re: Cтруктура описании ленты
Мерей писал(а):Здравствуйте, всем! Можете предоставить структуру описании ленты(записи) трафика станции МС-240.
У нас это называется формат бинарных данных биллинга.
Приведу полное описание, так как часто спрашивают.
== ЦПв3 (ЦПЕ) ==========
typedef struct {
WORD slot; // shelf:slot
WORD cell;
}XPORT;
typedef struct
{
BYTE day, month, hour,min; // дата и время начала разговора
// (год не пишется, ставится текущий, если месяц больше текущего то год -1)
WORD duration; // длительность (максимально 18 часов)
BYTE type; // тип разговора (см. расшифровку ниже)
BYTE sec; // секунды
XPORT portA; // порт А
BYTE caller[10]; // номер вызывающего, упакован
XPORT portB; // порт В
BYTE dialnum[15]; // набранный номер, упакован
BYTE trunkA; // номер транк группы А, 255 - локальный абонент
BYTE trunkB; // номер транк группы В, 255 - локальный абонент
BYTE Alen; // длина номера А
BYTE Blen; // длина номера В
BYTE catCID; // категория абонента А (в аscii)
WORD cont_talk; // индекс порезанного разговора =xFFFF для не порезаного
BYTE rsv2[2];
}
общая длина записи 50 байт.
типы записей
switch(record.type & 3)
{
case 0: str = "Локальный"; break;
case 1: str = "Входящий"; break;
case 2: str = "Исходящий"; break;
case 3: str = "Транзит"; break;
}
if(record.type>=0xF0) str = "***Метка***";
else if(record.type==0x80) str = "Метка-переадресации1";
else if(record.type==0x81) str = "Метка-переадресации2";
else if(record.type & 0x04) str+= "-переадресация";
cont_talk = индекс порезанной записи, если установлен флаг 0x8000, то это последний кусок.
если разговор не является частью другого то = 0xFFFF
строка портов (XPORT port)
int slot = port.slot & 0x0FFF;
switch(port.slot & 0xF000)
{
case 0x0000: // port
if(slot>999) slot = -1;
str.Format("%i.%i", slot, (port.cell>999) ? -1 : port.cell);
break;
case 0x1000: // CAS C4E1 port
if(slot>999) slot = -1;
str.Format("%i.%icas", slot, (port.cell>999) ? -1 : port.cell);
break;
case 0x2000: // SS7 C4E1 port
if(slot>999) slot = -1;
str.Format("%i.%iss7", slot, (port.cell>999) ? -1 : port.cell);
break;
case 0x4000: // PRI C4E1 port
if(slot>999) slot = -1;
str.Format("%i.%ipri", slot, (port.cell>999) ? -1 : port.cell);
break;
case 0x8000: // resource
if(port.slot==0x8000) // V5L_SLOT
{
str.Format("vid.%i", port.cell);
}
break;
}
== ЦКП (БКП) ==========
typedef struct
{
BYTE day, month, hour,min;
WORD duration;
BYTE type;
BYTE sec;
XPORT portA;
BYTE caller[15];
XPORT portB;
BYTE dialnum[15];
BYTE trunkA;
BYTE trunkB;
BYTE catCID;
BYTE rsv2[6];
}
typedef struct {
BYTE type;
BYTE slot;
BYTE stream;
BYTE port;
}XPORT;
формирование строки (XPORT port)
if(port.type == 0x05)
{
WORD index;
index = port.port;
index += (port.stream<<8);
str.Format("VA.%i", index);
}else{
str.Format("%i.%02i.%02i",
(port.slot>MAX_CARD) ? -1 : port.slot,
(port.stream>15) ? -1 : port.stream,
(port.port>40) ? -1 : port.port
);
}
тип такой же как для ЦПЕ.
==========
номера в упакованом формате:
const char DialChar[] = {
0,'1','2','3','4','5','6','7','8','9','0', '*', '#', ',', '?', 0, // pulse
0,'1','2','3','4','5','6','7','8','9','0', '*', '#', ',', '?', 0}; // DTMF
void UnpackDial(CString& str, BYTE* b, int b_len)
{
char c;
str.Empty();
for( int i=0; i<b_len; i++)
{
if( (c = DialChar[b[i]&0x0f]) == 0) break;
str += c;
if( (c = DialChar[b[i]>>4]) == 0) break;
str += c;
}
}
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя