for the
two letter country codes.
>
Country |Country Code |Area Code URL
----------------|--------------|-------------
Croatia |HR | [https://en.wikipedia.org/wiki/
Telephone\_numbers\_in\_Croatia](https://en.wikipedia.org/wiki/Telephone\_numbers\_in\_Croatia)
France |FR | [https://en.wikipedia.org/wiki/
Telephone\_numbers\_in\_France](https://en.wikipedia.org/wiki/Telephone\_numbers\_in\_France)
Germany |DE | [https://en.wikipedia.org/wiki/
Area\_codes\_in\_Germany](https://en.wikipedia.org/wiki/Area\_codes\_in\_Germany)
Sweden |SE | [https://en.wikipedia.org/wiki/
Telephone\_numbers\_in\_Sweden](https://en.wikipedia.org/wiki/Telephone\_numbers\_in\_Sweden)
United Kingdom |UK | [https://en.wikipedia.org/wiki/
United\_Kingdom\_area\_codes](https://en.wikipedia.org/wiki/United\_Kingdom\_area\_codes)
United States |US | [https://en.wikipedia.org/wiki/
North\_American\_Numbering\_Plan](https://en.wikipedia.org/wiki/North\_American\_Numbering\_Plan)
NONE |NONE |
## Emulation Programs and Test Files
> The **test** directory in the NCID source contains emulation programs
for the server, client, SIP gateway and modem. There are also test
files for the server and a client logfile used for screenshots in the
source test directory. The **README-test** file explains how to use the
emulation programs and test files.
## Appendix A: Copy-and-paste friendly {CALLTYPES} and {MSGTYPES}
> For development purposes, here are non-clickable, copy-and-paste
friendly versions all on one line. These are the types likely to be used
when creating new client output modules.
>>
>> No colons:
>>> Space delimited:
>>> BLK CID HUP MSG MWI NOT OUT PID PUT RID WID
>>> Comma delimited:
>>> BLK,CID,HUP,MSG,MWI,NOT,OUT,PID,PUT,RID,WID
>>> Comma and space delimited:
>>> BLK, CID, HUP, MSG, MWI, NOT, OUT, PID, PUT, RID, WID
>>> Pipe delimited:
>>> BLK|CID|HUP|MSG|MWI|NOT|OUT|PID|PUT|RID|WID
>>> Regex-ready, pipe delimited:
>>> ^BLK|^CID|^HUP|^MSG|^MWI|^NOT|^OUT|^PID|^PUT|^RID|^WID
>> With colons:
>>> Space delimited:
>>> BLK: CID: HUP: MSG: MWI: NOT: OUT: PID: PUT: RID: WID:
>>> Comma delimited:
>>> BLK:,CID:,HUP:,MSG:,MWI:,NOT:,OUT:,PID:,PUT:,RID:,WID:
>>> Comma and space delimited:
>>> BLK:, CID:, HUP:, MSG:, MWI:, NOT:, OUT:, PID:, PUT:, RID:, WID:
>>> Pipe delimited:
>>> BLK:|CID:|HUP:|MSG:|MWI:|NOT:|OUT:|PID:|PUT:|RID:|WID:
>>> Regex-ready, pipe delimited:
>>> ^BLK:|^CID:|^HUP:|^MSG:|^MWI:|^NOT:|^OUT:|^PID:|^PUT:|^RID:|^WID:
## Appendix B: Index of line type definitions
>
Table column| Description
------------|-------------
FS | Applicable Feature Set
History? | Yes if saved to call history log
Modules? | Yes if sent to client output modules
Forwarded? | Line type that is sent to forwarding gateway
> Arranged alphabetically.
>
>
>Click on the *Line type* XXX to be taken to its
definition.
>
>Not included below are XXXLOG: line types.
If the *History?* column is *Yes*, then when the server sends the call
history log, it replaces the XXX: label with
XXXLOG:. Clients parse XXXLOG:
as if they were XXX:.
>
>
>Line type | FS | History? | Modules? | Forwarded?
>:--------- |----|:--------:|:--------:|:----------
>[\\n (newline)](#line-type-newline) | 1 | | |
>[200](#line-type-200) | 1 | | |
>[210](#line-type-210) | 1 | | |
>[250 - 253](#line-type-25x) | 1 | | |
>[300](#line-type-300) | 1 | | |
>[400](#line-type-400) | 3 | | |
>[401](#line-type-401) | 3 | | |
>[402](#line-type-402) | 3 | | |
>[403](#line-type-403) | 3 | | |
>[410](#line-type-410) | 3 | | |
>[411](#line-type-411) | 3 | | |
>[ACK:](#line-type-ack) | 4 | | |
>[BLK:](#line-type-blk) | 2 | Yes | Yes | +BLK:
>[CALL:](#line-type-call) | 2 | | |
>
>Line type | FS | History? | Modules? | Forwarded?
>:--------- |----|:--------:|:--------:|:----------
>[CALLINFO:](#line-type-callinfo) | 2 | | |
>[CID:](#line-type-cid) | 1 | Yes | Yes | +CID:
>[CIDINFO:](#line-type-cidinfo) | 1 | Yes | Yes | +CIDINFO:
>[END:](#line-type-end) | 2 | Yes | | +END:
>[GOODBYE (client)](#line-type-goodbye-client) | 1 | | |
>[GOODBYE (gateway)](#line-type-goodbye-gw) | 2 | | |
>[HELLO: (client)](#line-type-hello-client) | 1 | | |
>[HELLO: (gateway)](#line-type-hello-gw) | 2 | | |
>[HUP:](#line-type-hup) | 1 | Yes | Yes | +HUP:
>[INFO:](#line-type-info) | 3 | | |
>[LOG:](#line-type-log) | 1 | | |
>[MSG: (client output)](#line-type-msg-client) | 1 | | |
>[MSG: (gateway alerts)](#line-type-msg-gw-alerts) | 2 | Yes | Yes | +MSG:
>[MSG: (gateway output)](#line-type-msg-gw-output) | 2 | | |
>[MSG: (server alerts)](#line-type-msg-server-alerts) | 1 | Yes | Yes | +MSG:
>[MSG: (server output)](#line-type-msg-server-output) | 1 | Yes | Yes | +MSG:
>[MWI:](#line-type-mwi) | 2 | Yes | Yes | +MWI:
>[NOT: (gateway)](#line-type-not-gateway) | 2 | Yes | Yes | +NOT:
>[NOT: (server)](#line-type-not-server) | 2 | Yes | Yes | +NOT:
>[OPT:](#line-type-opt) | 1 | | |
>[OUT:](#line-type-out) | 2 | Yes | Yes | +OUT:
>[PID:](#line-type-pid) | 2 | Yes | Yes | +PID:
>[PUT:](#line-type-put) | 2 | Yes | Yes | +PUT:
>[REQ:](#line-type-req) | 3 | | |
>[REQ: ACK (client)](#line-type-req-ack-client) | 4 | | |
>
>Line type | FS | History? | Modules? | Forwarded?
>:--------- |----|:--------:|:--------:|:----------
>[REQ: ACK (gateway)](#line-type-req-ack-gateway) | 4 | | |
>[REQ: DIAL or DIAL_ABORT](#line-type-req-dial)| 3 | | |
>[REQ: INFO](#line-type-req-info) | 3 | | |
>[REQ: RELOAD](#line-type-req-reload) | 3 | | |
>[REQ: REREAD](#line-type-req-reread) | 3 | | |
>[REQ: UPDATE](#line-type-update) | 3 | | |
>[REQ: UPDATES](#line-type-updates) | 3 | | |
>[REQ: YO (client)](#line-type-req-yo-client) | 4 | | |
>[REQ: YO (gateway)](#line-type-req-yo-gateway) | 4 | | |
>[REQ: alias](#line-type-req-alias) | 3 | | |
>[REQ: black](#line-type-req-black) | 3 | | |
>[REQ: white](#line-type-req-white) | 3 | | |
>[RESP:](#line-type-resp) | 3 | | |
>[RID:](#line-type-rid) | 2 | Yes | Yes | +RID:
>[RPLY:](#line-type-rply) | 3 | | |
>[RLY: (Relay Job Origin (RJO))](#line-type-rly-rjo) | 5 | Yes | | +RLY:
>[RLY: (Relay Job Target (RJT))](#line-type-rly-rjt) | 5 | Yes | | +RLY:
>[WID:](#line-type-wid) | 2 | Yes | Yes | +WID:
>[WRK:](#line-type-wrk) | 3 | | |
>[WRK: ACCEPT LOG](#line-type-wrk-accept-log) | 3 | | |
>[WRK: ACCEPT LOGS](#line-type-wrk-accept-logs) | 3 | | |
>[WRK: REJECT LOG](#line-type-wrk-reject-log) | 3 | | |
>[WRK: REJECT LOGS](#line-type-wrk-reject-logs) | 3 | | |
## Appendix C: Quick Reference List of all server configuration settings
> Arranged alphabetically by setting name.
>
File Name |Setting name| Brief description
----------|------------|:--------------------------------------------------------
ncidd.conf| announce | file name of raw modem device (.rmd) file to be played
ncidd.conf| audiofmt | "AT" command string to set voice modem audio format
ncidd.conf| blacklist | blacklist file name
ncidd.conf| cidalias | alias file name
ncidd.conf| cidinput | select Caller ID source
ncidd.conf| cidlog | log file name for call activity
ncidd.conf| cidlogmax | maximum size in bytes of cidlog
ncidd.conf| cidnoname | enable/disable detection of caller ID name from Telco
ncidd.conf| datalog | log file name for raw data received from modems and gateways
ncidd.conf| gencid | enable/disable reporting of generic caller ID
ncidd.conf| hangup | disable/select hangup mode
ncidd.conf| hupmode | Hangup Extension: disable/select hangup mode
ncidd.conf| hupname | Hangup Extension: file name of external script/program
ncidd.conf| huprmd | Hangup Extension: file name of raw modem device (.rmd) file to be played
ncidd.conf| ignore1 | enable/disable leading 1 in US/Canada
ncidd.conf| initcid | "AT" command string to enable modem's caller ID
ncidd.conf| initstr | "AT" command string to initialize modem
ncidd.conf| lineid | phone line identifier
ncidd.conf| lockfile | full path to modem/serial device lock file
ncidd.conf| pickup | enable/disable sending of "AT" command string to pickup phone line
>
File Name |Setting name| Brief description
----------|------------|:--------------------------------------------------------
ncidd.conf| pidfile | full path to server's process id file, prevents multiple instances
ncidd.conf| port | server's listening TCP/IP port number
ncidd.conf| regex | enable/disable POSIX or Perl Compatible regular expressions for alias, blacklist and whitelist files
ncidd.conf| send cidinfo| enable/disable sending of ring info to clients
ncidd.conf| send cidlog| enable/disable sending of call log to clients
ncidd.conf| ttyclocal | enable/disable hardware flow control for modem or serial device
ncidd.conf| ttyport | modem or serial device port name
ncidd.conf| ttyspeed | modem or serial device communication speed
ncidd.conf| verbose | verbose level
ncidd.conf| whitelist | blacklist file name
## Appendix D: More info about modem MESG hexadecimal characters
> When a modem that is configured to
output [Formatted Caller ID](#fs1-modem2server-formatted-cid) instead
receives something in the [raw MDMF parameter data](#fs1-modem2server-mdmf)
that it does not understand, it will generate a MESG line of the
unknown parameter block as a series of hexadecimal characters using
ASCII text. This does not mean an error was detected, rather it is
additional call detail provided by the telco that the modem doesn't
know how to decode.
> The NMBR label may be DDN\_NMBR (Dialable Directory Number) instead,
> depending on the country.
> Example of an incoming call generated by British Telecom in the UK:
>>
RING
>>
MESG = 110101
DATE = 0511
TIME = 1852
NAME = JOHN DOE
NMBR = 4075550000 or DDN_NMBR = 4075550000
>>
RING
> The hexadecimal characters can be interpreted by going to
> the [British Telecom document index](http://www.sinet.bt.com/sinet/SINs/index.htm),
> accepting the copyright agreement and then selecting Suppliers'
> Information Notes (SIN) [#227](http://www.sinet.bt.com/sinet/SINs/pdf/227v3p7.pdf).
> Page 22 of 34 has the following info (field names relabeled for clarity):
>>
Field name | Hex byte | Meaning
---------------- | ---------| -------
Parameter Code | 11 | Call type
Parameter Length | 01 | 1 byte
Qualifier | 01 | Voice call
> This indicates a normal call so the MESG line can be safely ignored.
> Example of a call from Bell Canada:
>>
RING
>>
DATE = 0511
TIME = 1852
NAME = JOHN DOE
NMBR = 4075550000 or DDN_NMBR = 4075550000
MESG = 06014C
>>
RING
> The hexadecimal characters can be interpreted using page 15 of 21 of
the [Bell Interface Document (BID), BID-0001 (on the Wayback Machine)](https://web.archive.org/web/20080908040823/http://www.bell.cdn-telco.com/bid/BID-0001Multiple.pdf):
>>
>>
Field name | Hex byte | Meaning
---------------- | ---------| -------
Parameter Code | 06 | Call type
Parameter Length | 01 | 1 byte
Qualifier | 4C ("L") | Long distance call
> It is unclear what determines the sequence that the MESG line is
emitted by the modem. For British Telecom, modems seem to generate MESG
before DATE and for Bell Canada telcos, modems seem to generate it
after NMBR/DDN\_NMBR.
> Additional info in
this [UK Telecom Google Group post](https://groups.google.com/forum/#!msg/uk.telecom/GDX2MEfhCJE/pFS-ioIJJroJ).
## Appendix E: SMS Relay Job sequence diagram (new in API 1.4)
> Below is a sequence diagram showing how NCIDpop relays SMS to NCID Android.
> The first two sequences show the use of NOT:
only. The third sequence shows how RLY:
was added to allow NCIDpop to "remotely" send SMS messages.
> ![](images/ncid-sms-relay.png)
## API Version Change History
> As new features are added they are marked **(New in API ?.?)**
> As features are removed, they are marked **(Removed in API ?.?)**
> The API version number is represented by ?.?
> ### Release Summary
>
>>
API Version |NCID Version| Feature Sets
----------- |:----------:| -------------
1.10 | 1.11 | 1 2 3 4 5
1.9 | 1.10 | 1 2 3 4 5
1.8 | 1.9 | 1 2 3 4 5
1.7 | 1.8 | 1 2 3 4 5
1.6 | 1.7 | 1 2 3 4 5
1.5 | 1.6 | 1 2 3 4 5
1.4 | 1.5 | 1 2 3 4 5
1.3 | 1.4 | 1 2 3 4
1.2 | 1.3 | 1 2 3 4
1.1 | 1.1 | 1 2 3 4
1.0 | 1.0 | 1 2 3 4
>### Version 1.10
>> #### General changes
>>
>>> - Feature sets supported: 1 2 3 4 5
>>> - Released simultaneously with NCID 1.11.
>> #### Feature Set 1: Modem and Device Support
>>
>>> [Server Implementation](#fs1-server-impl)
>>>
>>> - Added 254 Start of call log line.
>### Version 1.9
>> #### General changes
>>
>>> - Feature sets supported: 1 2 3 4 5
>>> - Released simultaneously with NCID 1.10.
>> #### Feature Set 1: Modem and Device Support
>>
>>> [Server Implementation](#fs1-server-impl)
>>>
>>> - Changed description of hangup and when CID: line is sent.
>>>> [Server Output Lines](#fs1-server-output)
>>>> - Added "-4 = (modem) automatic hangup complete" to the CIDINFO table.
>### Version 1.8
>> #### General changes
>>
>>> - Feature sets supported: 1 2 3 4 5
>>> - Released simultaneously with NCID 1.9.
>> #### Before you begin
>>> [ABOUT CONFIGURATION OPTIONS FOR SERVER IMPLEMENTATIONS](#about-config)
>>> - Added **XDMF Gateway settings** line to the table
>> #### Feature Set 1: Modem and Device Support
>>> [SERVER IMPLEMENTATION](#fs1-server-impl)
>>>> [Server Output Lines](#fs1-server-output)
>>>> - Added "-3 = (gateway) BUSY signal for incomplete call" to the CIDINFO table.
>>>> [Modem-to-server](#fs1-modem2server)
>>>> - Changed **Formatted Caller ID*** to [ASCII Format Caller ID](#fs1-modem2server-ascii-format-cid).
Removed references to the Comet.
>>>> - Changed **Unformulated Caller ID*** to [XDMF ASCII Format Caller ID](#fs1-modem2server-ascii-hex-format-cid).
>> #### Feature Set 2: Gateway Support
>>> [SERVER IMPLEMENTATION](#fs2-server-impl)
>>> - Added a CIDINFO: line with BUSY if the ring count is -3.
>>> - Added [XDMF Input](#fs2-xdmf-input).
>>>> - Added [Holtek HT9032D operation mode](#fs2-xdmf-input-ht9032-op-mode).
>### Version 1.7
>> #### General changes
>>
>>> - Feature sets supported: 1 2 3 4 5
>>> - Released simultaneously with NCID 1.8.
>>> - Changes made throughout for OPT: regex
and **ncidd.conf::regex**. These now support a dash to accommodate the
new value of 2 (regex-2) for PCRE (Perl Compatible Regular Expressions).
POSIX expressions were already supported but are now designated by regex-1.
>> #### [Call/Message Line Types, Categories and Structure (new in API 1.7)](#comm)
>>> - [**New**](#comm)
>> #### Feature Set 1: Modem and Device Support
>>
>>> [Server Implementation -> Modem-to-Server](#fs1-modem2server)
>>>
>>> - [Added new support for Unformatted Caller ID (SDMF, MDMF)](#fs1-modem2server-unformatted-cid).
>> #### Feature Set 2: Gateway Support
>>
>>> Server Implementation -> Server Output Lines
>>>
>>> - [MWI:](#line-type-mwi) added as new line
type for Message Waiting Indicator.
>>> - [PUT:](#line-type-put) added as new line
type for smartphone outgoing call.
>>> - [RID:](#line-type-rid) added as new line
type for ringback caller ID.
>>> [Gateway Implementation -> Gateway-to-Server](#fs2-gw2server)
>>>
>>> - [CALL:](#line-type-call) added
PUT:, MWI:,
>### Version 1.6
>> #### General changes
>>
>>> - Feature sets supported: 1 2 3 4 5
>>> - Released simultaneously with NCID 1.7.
>> #### Feature Set 1: Modem and Device Support
>>
>>> [Server Implementation](#fs1-server-impl)
>>>
>>> - Added new GOODBYE line type.
>>> [Server Implementation -> Server Output Lines -> OPT: LineIDS:](#line-type-opt)
>>>
>>> - [**New**](#line-type-opt)
>>> [Server Implementation -> Server Output Lines -> RPLY:](#line-type-rply)
>>>
>>> - [**New**](#line-type-rply)
>>>> [Server Implementation -> Optional Server Hangup Extension](#fs1-hangup-ext)
>>>>
>>>> - Hangup extensions can return a hangup reason to the server.
>>> [Client Implementation](#fs1-client-impl)
>>> - Revised recommended content for HELLO: IDENT:.
Removed unnecessary verbiage stating servers can display these lines.
>>> - Added new GOODBYE line type.
>>> [Client Implementation -> Client-to-Server -> GOODBYE](#line-type-goodbye-client)
>>>
>>> - [**New**](#line-type-goodbye-client)
>>> [Client Implementation -> Client-to-Server](#fs1-client2server)
>>>
>>> - Added new HELLO: CMD: send_log command.
>>> [Client Implementation -> Optional Client-to-TiVo Display](#fs1-client2tivo)
>>>
>>> - (Removed in API 1.6)
>>> [Optional Server Extensions -> Optional Server Hangup Extension](#fs1-hangup-ext)
>>>
>>> - Added MODE field pair to data passed to Hangup Server Extension.
>>> - Data returned to ncidd now includes hupmode.
>> #### Feature Set 2: Gateway Support
>>
>>> [Gateway Implementation -> Gateway-to-Server -> GOODBYE](#line-type-goodbye-gw)
>>>
>>> - [**New**](#line-type-goodbye-gw)
>> #### Feature Set 3: Client Job Support
>>
>>> [Overview of Available Client Jobs](#fs3-overview)
>>>
>>> - Added new REQ: DIAL and
REQ: DIAL_ABORT line types.
>>> [Client Implementation](#fs3-client-impl)
>>>
>>> - Added "dial" to graphical NCID client features.
>>> [Client Implementation -> Client-to-Server -> REQ: DIAL|DIAL_ABORT](#line-type-req-dial)
>>>
>>> - [**New**](#line-type-req-dial)
>>> [Client Implementation -> Client-to-Server -> Requirements For Dial-a-number Client Job](#fs3-dial-req)
>>>
>>> - [**New**](#fs3-dial-req)
>>> [Client Job Examples](#fs3-examples)
>>>
>>> - Added REQ: DIAL to overview table.
>>> - Added [REQ: DIAL](#fs3-example-dial) example.
>> #### [Appendix B: Index to all line type definitions](#index-line-types)
>>
>> - Added new REQ: DIAL, REQ: DIAL_ABORT,
GOODBYE and RPLY
line types. Removed unnecessary syntax for REQ: INFO.
>### Version 1.5
>> #### General changes
>>
>>> - Feature sets supported: 1 2 3 4 5
>>> - Released simultaneously with NCID 1.6.
>> #### Feature Set 1: Modem and Device Support
>>
>>> [Server Implementation](#fs1-server-impl)
>>> - Added line type HELLO:.
>>> [Client Implementation](#fs1-client-impl)
>>> - Added definition for line type HELLO:.
>> #### Feature Set 2: Gateway Support
>>> [Gateway Implementation](#fs2-gw-impl)
>>> - Added line type HELLO:.
>>> [Client Implementation](#fs2-client-impl)
>>> - Added line type HELLO:.
>>> [Optional Client-to-Module](#fs2-client2module)
>>> - Added line type HELLO:.
>### Version 1.4
>> #### General changes
>>
>>> - Feature sets supported: 1 2 3 4 5
>>> - Released simultaneously with NCID 1.5.
>>> - Added definitions for line types +BLK, +CID,
+END, +HUP, +MSG, +NOT, +OUT, +PID, +RLY, +WID and
+CIDINFO.
These represent line types from a Forwarding Gateway. They are
otherwise the same as the same line types without the leading "+".
>> #### Before you begin
>>> [General notes on DATE and TIME field data](#gen-datetime)
>>> - Added note that RLY: line types will not
>>> be checked for missing DATE and TIME fields because they are expected
>>> to be present.
>> #### Feature Set 2: Gateway Support
>>> [Forwarding Gateway (Server-to-Server) (new in API 1.4)](#fs2-fwdgw)
>>> - [**New**](#fs2-fwdgw)
>> #### [Feature Set 5: Relay Job Support](#fs5-relay-job-support)
>>> - [**New**](#fs5-relay-job-support)
>> #### [Appendix A: Quick Reference List of all call type line identifiers](#quick-ref-call-types)
>>> - Added RLY:.
>> #### [Appendix B: Index to all line type definitions](#index-line-types)
>>> - Added RLY: and RLYLOG:.
>> #### [Appendix E: SMS Relay Job sequence diagram](#ncidpop-sms-relay)
>>> - [**New**](#ncidpop-sms-relay)
>### Version 1.3
>> #### General changes
>>
>>> - Feature sets supported: 1 2 3 4
>>> - Released simultaneously with NCID 1.4
>> #### Feature Set 1: Modem and Device Support
>>
>>> [Server Implementation -> Server Output Lines](#fs1-server-output)
>>>
>>>> - All OPT: lines output by
the server are for informational and troubleshooting purposes
only. Clients can optionally make use of them by giving the user a
way to display them. Otherwise, clients are not required to display
them, do not need to take any action on them and can safely ignore them.
See [Feature Set 1 OPT: definition](#line-type-opt)
and [Feature Set 1: Client Implementation](#fs1-client-impl) for
more information.
>>
>>> [Client Implementation](#fs1-client-impl)
>>>
>>>> - All OPT: lines output by
the server are for informational and troubleshooting purposes
only. Clients can optionally make use of them by giving the user a
way to display them. Otherwise, clients are not required to display
them, do not need to take any action on them and can safely ignore them.
See [Feature Set 1 OPT: definition](#line-type-opt)
and [Feature Set 1: Client Implementation](#fs1-client-impl) for
more information.
>> #### Feature Set 2: Gateway Support
>>
>>> [Client Implementation](#fs2-client-impl)
>>>
>>>> - All OPT: lines output by
the server are for informational and troubleshooting purposes
only. Clients can optionally make use of them by giving the user a
way to display them. Otherwise, clients are not required to display
them, do not need to take any action on them and can safely ignore them.
See [Feature Set 1 OPT: definition](#line-type-opt)
and [Feature Set 1: Client Implementation](#fs1-client-impl) for
more information.
>> #### Feature Set 3: Client Job Support
>>
>>> [Server Implementation](#fs3-server-impl)
>>>> - reload the blacklist and whitelist files
>>>>
(Removed in API 1.3) if
the **ncidd.conf::hangup** option is being used
>>> [Client Implementation](#fs3-client-impl)
>>>
>>>> - All OPT: lines output by
the server are for informational and troubleshooting purposes
only. Clients can optionally make use of them by giving the user a
way to display them. Otherwise, clients are not required to display
them, do not need to take any action on them and can safely ignore them.
See [Feature Set 1 OPT: definition](#line-type-opt)
and [Feature Set 1: Client Implementation](#fs1-client-impl) for
more information.
>>>> Graphical client description
>>>> - (Removed in API 1.3) only if the
server sends OPT: hangup will the user have
an option to force the server to reload the blacklist/whitelist files
>### Version 1.2
>> #### General changes
>>
>>> - Feature sets supported: 1 2 3 4
>>> - Released simultaneously with NCID 1.3
>> #### Feature Set 1: Modem and Device Support
>>
>>> [Server Implementation -> Server Output Lines](#fs1-server-output)
>>>
>>>> - **changed:**
*NONAME* to *NO NAME*
*NONUMBER* to *NO-NUMBER*
*NOLINE* to *NO-LINE*
>>
>>> [Client Implementation](#fs1-client-impl)
>>>
>>>> - Removed `OPT: ignore1` from OPT: section.
>>>>> Note: In API 1.3, `OPT: ignore1` was re-implemented for informational
>>>>> and troubleshooting purposes only.
>> #### Feature Set 2: Gateway Support
>>
>>> [Server Implementation -> Server Output Lines](#fs2-server-output)
>>>
>>>> - **changed:**
*NONAME* to *NO NAME*
*NONUMBER* to *NO-NUMBER*
*NOLINE* to *NO-LINE*
*NOTYPE* to *-*
>### Version 1.1
>> #### General changes
>>
>>> - Feature sets supported: 1 2 3 4
>>> - Released simultaneously with NCID 1.1
>> #### Feature Set 1: Modem and Device Support
>>
>>> [Server Implementation -> Optional TCI Device-to-Server](#fs1-tci2server)
>>>> - [**New**](#fs1-tci2server)
>> #### Feature Set 3: Client Job Support
>>
>>> [Client Implementation -> Client-to-Server](#fs3-client2server)
>>>
>>>> Graphical client description
>>>> - (Removed in API 1.1) only if the
server sends OPT: hangup will the user be
able to edit the blacklist/whitelist entries
>>>> Updated the following Client Jobs:
>>>
>>>> - REQ: black add
>>>> - REQ: black remove
>>>> - REQ: white add
>>>> - REQ: white remove
>>>>
>>> with the following:
>>>
>>>>> (Removed in API 1.1) The server must have
sent and the client must have received,
OPT: hangup to enable this Client Job.
>### Version 1.0
>> - Feature sets supported: 1 2 3 4
>> - Released simultaneously with NCID 1.0
>> - New
## Documentation Change History
>### Apr 26, 2019
>> HTML formatting
>>> small change to the HTML for improved appearance
>### Oct 25, 2018
>> #### Feature Set 1: Modem and Device Support
>>> [SERVER IMPLEMENTATION](#fs1-server-impl)
>>> - Changed description of hangup and when CID: line is sent.
>>>> [Server Output Lines](#fs1-server-output)
>>>> - Added "-4 = (modem) automatic hangup completed" to the CIDINFO table.
>> #### [Appendix C: Quick Reference List of all server configuration settings](#quick-ref-serv-config)
>>> - Removed cidnoname from table
>### August 17, 2018
>> #### Before you begin
>>> [ABOUT CONFIGURATION OPTIONS FOR SERVER IMPLEMENTATIONS](#about-config)
>>> - Added **XDMF Gateway settings** line to the table
>> #### Feature Set 1: Modem and Device Support
>>> [SERVER IMPLEMENTATION](#fs1-server-impl)
>>>> [Server Output Lines](#fs1-server-output)
>>>> - Added "-3 = (gateway) BUSY signal for incomplete call" to the CIDINFO table.
>>>> [Modem-to-server](#fs1-modem2server)
>>>> - Changed **Formatted Caller ID*** to [ASCII Format Caller ID](#fs1-modem2server-ascii-format-cid).
Removed references to the Comet.
>>>> - Changed **Unformulated Caller ID*** to [XDMF ASCII Format Caller ID](#fs1-modem2server-ascii-hex-format-cid).
>> #### Feature Set 2: Gateway Support
>>> [SERVER IMPLEMENTATION](#fs2-server-impl)
>>> - Added a CIDINFO: line with BUSY if the ring count is -3.
>>> - Added [XDMF Input](#fs2-xdmf-input).
>>>> - Added [Holtek HT9032D operation mode](#fs2-xdmf-input-ht9032-op-mode).
>### May 31, 2018
>> #### General changes
>>
>>> - Wherever practical, lists of line types were changed to
{CALLTYPES} or {MSGTYPES}.
>>> - Redundant copies of field pair tables were removed and replaced with
links to [{CALLTYPES} Category Structure](#comm-calltypes)
or [{MSGTYPES} Category Structure](#comm-msgtypes).
>>> - Renamed all call-type links to be line-type links.
>>> - All +XXX: and XXXLOG:
definitions were removed because it is redundant data and is not
of value. They have the same definitions as XXX:.
>>> - [Appendix B: Index to all line type definitions](#index-line-types)
doesn't need "new in API" notations.
>> #### Before you begin
>>
>>> [About Line Types and Field Pairs](#about-pairs)
>>>
>>> - Renamed "About *Field Pairs* and *Line Types*" to "About *Line Types*
and *Field Pairs*".
>>> - Swapped section order of "Field Pairs" and "Line Types" in order to
explain XXX convention.
>> #### Feature Set 1: Modem and Device Support
>>
>>> [Server Implementation](#fs1-server-impl)
>>>
>>> - Added **ncidd.conf::cidlogmax** to discussion about **ncidd.conf::send cidlog**.
>>> - Added missing reference to Hangup Extensions.
>>> Server Implementation -> Server Output Lines
>>>
>>> - [CIDINFO:](#line-type-cidinfo) Updated
ring count descriptions to more accurately describe the values.
>>> - [HUP:](#line-type-hup) Added missing
reference to Hangup Extensions.
>>> - [LOG:](#line-type-log) Updated with a more
realistic example.
>>> - [MSG:](#line-type-msg-server-alerts) Added
missing server alert definition.
>>> [Server Implementation -> Modem-to-Server](#fs1-modem2server)
>>>
>>> - Moved and improved wording describing when caller ID is sent by
telcos in different countries.
>>> [Client Implementation](#fs1-client-impl)
>>>
>>> - Moved XXXLOG: lines to be prior to line
type 250. Added missing reference to LOG:.
>>> - Combined hangup and hangup-1 to the same table row.
>> #### Feature Set 2: Gateway Support
>>
>>> Server Implementation -> Server Output Lines
>>>
>>> - [END:](#line-type-end) updated to clarify
that CTYPE can only be IN or OUT.
>>> - [PID:](#line-type-pid) removed reference
to output module ncid-notify.
>>> - [WID:](#line-type-wid) cosmetic, moved
"(new in API 1.1)" to end of line.
>>> [Gateway Implementation](#fs2-gw-impl)
>>>
>>> - Clarified "CALL field" is "CALL<type> field".
>>> - Simplified and shortened text explaining CALL:
text line format.
>>> - Fixed typo, NOT: uses MTYPE and not TYPE.
>>> Gateway Implementation -> Gateway-to-Server
>>>
>>> - [CALL:](#line-type-call) clarified use of
CALLtype when using IN, CID and PID.
>>> - [CALLINFO:](#line-type-callinfo) clarified
use of CALLtype when using IN, CID and PID.
>>> - [MSG:](#line-type-msg-gw-alerts) added
missing gateway alert definition.
>>> Gateway Implementation -> Gateway-to-Server
>>>
>>> - [CALLINFO:](#line-type-callinfo) changed
'CALL<type>' to 'CALL<io>'. CALLio can only be IN or OUT.
>>> - [MSG:](#line-type-msg-gw-output) added
missing gateway output definition.
>>> [Client Implementation](#fs2-client-impl)
>>>
>>> - Consolidated individual LOG: lines to XXXLOG:.
>> #### Feature Set 3: Client Job Support
>>
>>> [Client Implementation](#fs3-dial-client-impl)
>>>
>>> - Fixed link for 555-01XX fictional numbers.
>> #### [Feature Set 4: Acknowledgment Support](#fs4-ack-support)
>>
>> - Clarified that this Feature Set applies to gateways as well as
clients. Removed some repetitive explanations. Sorted request lines
alphabetically within sections. Improved overall wording for clarity.
>>> [Server Implementation -> Server Output Lines](#fs4-server-output)
>>>
>>> - Fixed example by changing PID: to CALL:.
>>> [Gateway Implementation -> Gateway-to-Server](#fs4-gw2server)
>>>
>>> - Added missing definitions for REQ: ACK
depending on whether it's for a gateway or client implementation.
>> #### [Country Codes](#country-codes)
>>
>> - Added FR. Sorted alphabetically on country name. Links turned into
clickable links instead of just text.
>> #### [Appendix A: Copy-and-paste friendly {CALLTYPES} and {MSGTYPES}](#quick-ref-call-types)
>>
>> - Appendix A renamed from "Quick Reference List of all call type line
identifiers" to "Copy-and-paste friendly {CALLTYPES} and {MSGTYPES}".
Removed types not likely to be used. Added MWI,
PUT and RID.
>> #### [Appendix B: Index of line type definitions](#index-line-types)
>> - Appendex B renamed from "Index to all line type definitions" to
"Index of line type definitions". Converted to a table and added all
new columns.
>> #### [Appendix D: More info about modem MESG hexadecimal characters](#modem-mesg-hex)
>>
>> - Modem 'MESG' data string is MDMF. Fixed broken links to external
documents.
>### November 5, 2017
>> #### General changes
>>
>>> - There were several places where features or line types were listed under
Feature Set 1 when they should have been listed under Feature Set 2 or 3.
In particular, verbiage related to gateways in Feature Set 1 was moved to,
or duplicated, to their rightful place in Feature Set 2. Links updated.
>>> - "Smart phone" was changed to "smartphone".
>>> - Changed API Version Change History and Documentation Change History
sections to use fewer font sizes. This improves readability.
>>> - Some colons were missing in ACK: and
REQ: line references.
>>> - Added new INFO: dial line to all Client Job
examples.
>>> - Added new OPT: LineIDS: to examples where appropriate.
>> #### Before you begin
>>
>>> [About End-of-line Terminators](#about-eol)
>>> - [**New**](#about-eol)
>>> [Ensuring connectivity with the server](#connectivity)
>>>
>>> - Clarified that the three methods to test connectivity are listed
in order of increasing robustness.
>>> - REQ: YO is supported in Feature Set 4 not
Feature Set 2.
>> #### Feature Set 1: Modem and Device Support
>>
>>> [Server Implementation -> Server Output Lines](#fs1-server-output)
>>>
>>> - Call/line types now in alphabetical order, e.g., CIDINFO:
now before CIDLOG:.
>>> - MSG: server definition: removed
incorrect reference to "user generated message".
>>> - [OPT: definition](#line-type-opt):
>>>> Clarified that unless otherwise noted, all OPT:
lines should be ignored. It is an exception if a client needs to use them.
>>>> Expanded descriptions of existing OPT: lines.
>>> Server Hangup Support
>>>
>>>> [Alphabetical list of related server configuration options:](#fs1-hangup-server-config-options)
>>>> - Added cidinput, removed nomodem and noserial.
>>>> [Server Implementation -> Optional Server Hangup Extension](#fs1-hangup-ext)
>>>>
>>>> - Clarified that other lines to STDOUT will be logged in ncidd.log.
>>> [Client Implementation](#fs1-client-impl)
>>>
>>> - Improved wording regarding xxxLOG: lines.
Added MSGLOG:.
>>> - Clarified that unless otherwise noted, all OPT:
lines should be ignored. It is an exception if a client needs to use them.
>>> [Client Implementation -> Client-to-Server](#fs1-client2server)
>>>
>>> - Moved