CVM Api Interface
CVM Api Interface
CVM API
CVM Platform
1.1 Contents
1 DOCUMENT INFO ................................................................................................................................2
1.1 Contents...................................................................................................................... 2
1.2 Scope .......................................................................................................................... 5
1.3 History........................................................................................................................ 5
1.4 References .................................................................................................................. 7
1.5 Terms & Abbreviations.............................................................................................. 7
1.6 Naming of the mail primitives ................................................................................... 8
1.7 Packing the individual API commands ...................................................................... 9
2 COMPONENTS DESCRIPTION .........................................................................................................10
2.1 Concept of component ............................................................................................. 10
2.1.1 Related Components ........................................................................................ 10
2.1.2 Conditional Compilements............................................................................... 10
2.1.3 Configuration of component ............................................................................ 10
3 USAGE OF COMPONENT .................................................................................................................11
3.1 Component Interface:............................................................................................... 11
3.2 Protocol PP: MCU_PP -> CVM_PP ........................................................................ 11
3.3 Protocol PP: CVM_PP -> MCU_PP ........................................................................ 12
3.4 Protocol FP (SpeakerPhone): MCU_FP -> CVM_FP.............................................. 13
3.5 Protocol FP (SpeakerPhone): CVM_FP -> MCU_FP.............................................. 14
3.6 Component Interface: General MCU <-> CVM .................................................... 15
4 DETAILED INTERFACE DESCRIPTION ............................................................................................22
4.1 Connection setup/release, dial-digit transmission, CLIP, Portable part................... 22
4.2 Protocol PP: CVM_PP -> MCU_PP ........................................................................ 27
4.3 Connection instance handling, Fixed part ................................................................ 39
4.4 Protocol FP: MCU_FP -> CVM_FP ........................................................................ 41
4.5 Protocol FP: CVM_FP -> MCU_FP ........................................................................ 49
4.6 API bus control......................................................................................................... 59
4.7 General purpose data connection, Portable Part....................................................... 59
4.8 General purpose data connection, Fixed Part........................................................... 60
4.9 General purpose unitdata broadcast ......................................................................... 61
4.10 High speed general purpose data connection, Portable part..................................... 62
4.11 High speed general purpose data connection, Fixed part......................................... 62
4.12 EEPROM access ...................................................................................................... 64
4.13 Remote EEPROM access ......................................................................................... 65
4.14 General purpose I/O access ...................................................................................... 66
4.15 FP DSP Control commands: .................................................................................... 70
4.16 Audio path control PP .............................................................................................. 74
4.17 Audio path control FP .............................................................................................. 77
4.18 Tone control PP FP .................................................................................................. 78
4.19 Tone/Melodies in eeprom......................................................................................... 80
Headset detection ................................................................................................................. 83
Audio adjustment PP (Filter setup) ...................................................................................... 84
01/20/04 3:00 PM CVM API interface V 0.156 Page 2
Copyright 2003 National Semiconductor BV Company Confidential
Het Zuiderkruis 53
5215 MV ’s-Hertogenbosch PRELIMINARY
The Netherlands
Real Time Clock................................................................................................................... 86
4.20 Battery Management ................................................................................................ 88
4.21 Mode, configuration and status management........................................................... 90
4.22 Software version....................................................................................................... 90
4.23 PSTN line signal detection....................................................................................... 90
4.24 Walkie Talkie mode ................................................................................................. 95
5 COMMUNICATION SCENARIOS .......................................................................................................97
5.1 External outgoing call: Portable Part ....................................................................... 97
5.2 External outgoing call: Fixed Part (SpeakerPhone) ................................................. 97
5.3 External incoming call: Portable Part....................................................................... 98
5.4 External incoming call: Fixed Part (SpeakerPhone) ................................................ 99
5.5 External incoming call using Alert broadcast (*currently not supported) ............. 100
5.6 Ring termination (Unanswered incoming call times out: Portable Part................. 101
5.7 Ring termination (Unanswered incoming call times out): Fixed Part (SpeakerPhone)
102
5.8 Example Internal call from Fixed Part (SpeakerPhone) to Portable Part............... 103
5.9 Example Internal call from Portable Part to Portable Part ..................................... 104
5.10 Call transfer (attended): Fixed Part (SpeakerPhone) to Portable .......................... 105
5.11 Call transfer (un-attended): Portable to Fixed Part (SpeakerPhone)..................... 106
5.12 Call transfer (attended): Portable to Portable ........................................................ 107
5.13 3 part conference: (Portable <-> Portable <-> PSTN) .......................................... 108
5.14 conference: (barge in)............................................................................................. 109
5.15 Example Fp pageall from Fixed Part to Portable Part............................................ 110
5.16 FP rejected outgoing call: (Portable Part) .............................................................. 111
5.17 Release from PP: (Portable Part)............................................................................ 112
5.18 Release from FP: (Portable Part)............................................................................ 112
5.19 FP Remote Line mode............................................................................................ 113
5.20 FP Remote Line mode: Ext outgoing from FP (SpkPhone) to FP (line)................ 114
5.21 FP Remote Line mode: Ext outgoing from PP to FP (line) ................................... 115
5.22 FP Remote Line mode: Ext incoming call from FP (line) to FP (SphPhone) ........ 116
5.23 FP Remote Line mode: Ext incoming call from FP (line) to PP............................ 117
5.24 FP Remote Line mode: Int call from PP to FP(SpeakerPhone) ............................. 118
5.25 FP Remote Line mode: Int call from FP (SpkPhone) to selected PP ..................... 119
5.26 Successful registration (subscription) .................................................................... 120
5.27 Registration (subscription) fails, retry, successful ................................................. 120
5.28 Registration (subscription) fails, retry, unsuccessful ............................................. 121
5.29 Terminate a registration (subscription) locally in Portable Part ............................ 122
5.30 Terminate a registration (subscription) locally in Fixed Part................................. 122
5.31 Terminate a registration (subscription) remotely in FP from PP ........................... 122
5.32 Autoregistration (subscription) .............................................................................. 123
5.33 Select subscription (success) (Portable Part) ......................................................... 124
5.34 Select subscription (fail)(Portable Part) ................................................................. 124
5.35 Service call (low speed datatransfer with IWU) PP<->FP..................................... 125
5.36 Unitdata broadcast (broadcast data to all PP without establishing connection)..... 126
5.37 High speed data transfer......................................................................................... 127
5.38 Remote Eeprom Read/Write (PP to FP)................................................................. 128
5.39 Invoke subscription (accessrights) in FP................................................................ 128
5.40 Get time .................................................................................................................. 129
Chapter 2 gives a description of the concept of this component and the primary relation with
other components. Chapter 3 describes the usage of the interface, e.g. presents the interface
functions/calls to the component, and chapter 4 describes the design of the component.
Section 2 and 3 of this document should be used for all components, but section 4, which
gives a more detailed description of the design, can be used when necessary.
1.3 History
Revision Author Issue Date Comments
00.01 SS 28-Aug-2002 First revision
00.02 SS 10-Sep-2002 FP protocol signaling added
00.03 SS 18-Oct-2002 Busmail serial interface chapter added
00.07 SS 7-Jan-2003 Minor changes in scope/footer
00.07 MDA 9-Jan-2003 Minor changes to Real Time Clock and Battery Management
chapters.
00.07 SS 27-Jan-2003 Review and cleanup in protocol mails
Introducing the MCU term
Added MessageSequenceCharts for more callhandling cases
00.07 MDA 29-Jan-2003 Changes to API_PP_CLIP_IND parameters.
00.07 MDA 31-Jan-2003 API_FP_CLIP_IND added.
00.08 SS 4-Feb-2003 SPI bus switch added
KBP 5-Feb-2003 BUSMAIL protocol updated.
SS 5-Feb-2003 Ram/Register read/write added
SS 5-Feb-2003 Mic Mute/Unmute added in PP
MDA 11-Feb-2003 Added CVM_SET_TIME_REMOTE_REQ and _CFM
MDA 13-Feb-2003 API_PP_VMWI_IND and API_FP_VMWI_IND added.
00.10 SS 18-Feb-2003 Mail dicrection corrected for
CVM_PP_AUDIO_HS_PLUG_IND description
00.11 SS 19-Feb-2003 Production test batch files modified.Description on how to
send productiontest commands as anAPI call added
00.12 KBP 24-Feb-2003 Message Sequence figure showing flow control updated
00.13 KBP 25-Feb-2003 Message Sequence figure showing flow control updated
SS 27-Feb-2003 Delete subscription added
MDA 3-Mar-2003 Additional battery management functionality:
- CVM_BAT_POWER_ON_REASON_REQ
- CVM_BAT_POWER_ON_REASON_CFM
- CVM_BAT_CRADLED_REQ
- CVM_BAT_CRADLED_CFM
- CVM_BAT_CAPACITY_IND
- CVM_BAT_EMPTY_IND
- CVM_BAT_RESET_REQ
MDA 11-Mar-2003 Walkie Talkie mode API description added.
MDA 12-Mar-2003 Walkie Talkie mode communication scenarios added.
MDA 12-Mar-2003 CVM_BUS_DISABLE_REQ (sleep mode) added.
MLA 13-Mar-03 High speed data API added
V0120 SS 14-Mar-2003 FP speakerphone has beeen added
V0121 MDA 24-Mar-2003 Description of reason codes for CLIP added.
V0123 MDA 31-Mar-2003 Communication scenarios added for Real Time Clock setting.
Four types of primitives exist, Request (req), Indicate (ind), Response (res) and Confirm
(cfm). A "cfm" primitive only occurs as confirmation of an action initiated by a "req"
primitive. A "res" primitive can only follow a "ind" primitive. The direction of the primitives
is shown in the figure below.
In peer to peer (P2P) communication between FP and PP a sent "req" will be received as a
"ind" in the other party and a sent "res" will be received as a "cfm".
In the primitive name is also included if the mail is used in the handset (PP) mode or in the
basestation (FP) mode.
If no part is indicated, the same primitive can be used for both parts.
*in some cases of the protocol communication a req will not be answered by a cfm but by a
ind instead. This is to match some special cases of the DECT protocol.
When packing the API commands the package should be build up as follows:
Frame Char (MS byte) Length (LS byte) Header Mail Checksum
Program Id Task Id. (LS Byte) Primitive (MS Byte) Mail parametres
The message is set to the length, the command (primitive) and if needed the commmand
parameters.
ProgramID = 0x00
TaskID = 0x0F (USERTASK)
The entire mail package with header, ack and checksum could then end up looking something
like this: (see chapter 6 on how to pack the entire mail)
10 00 05 3A 00 0F 2B 2F A3
#ifdef Description
API_PP_RELEASE_IND 0x857B CVM->MCU Indicates that the FP has rejected the connection to the
PP.
API_PP_RELEASE_CFM 0x857A CVM->MCU Confirms the PP-initiated release
API_PP_REJECT_IND 0x8564 CVM->MCU FP rejects the connection to the PP.
API_PP_ACCESS_RIGHTS_CFM 0x8568 CVM->MCU Confirmation of successful registration of a PP to and
FP
API_PP_ACCESS_RIGHTS_REJ 0x8569 CVM->MCU Rejection of unsuccessful registration of a PP to and FP
API_PP_DELETE_SUBS_CFM 0x8561 CVM->MCU Confirm on termination of the PP subscription
API_PP_REMOTE_DELETE_SUBS_ 0x2F9F CVM->MCU Remotely deregister PP from FP (remotely in/from FP
CFM to PP)
API_PP_CLIP_IND 0x2F93 CVM->MCU Sends a CLIP package from the CVM_PP to the
MCU_PP
API_PP_SW_STATUS_IND 0x2FC2 CVM->MCU Indicated status of the FP switching for current
connection
API_PP_MESSAGE_WAITING_IND 0x2FA1 CVM->MCU Sends Visual Message Waiting Indication (VMWI)
status from the CVM_PP to the MCU_PP
CVM_PP_PLUG_STATUS_IND 0x2F4F CVM->MCU Sends line plug status to the PP_MCU
CVM_PP_LINE_STATUS_IND 0x2F53 CVM->MCU Sends line status to the PP_MCU
CVM_PP_ON_KEY_IND 0x2F64 CVM->MCU Sends keystatus of the PP ON_KEY to the MCU
API_PP_READ_RSSI_CFM 0x2FC7 CVM->MCU Returns the requested readout of the current RSSI
(ReceivingSignalStrengthIndication) of the PP
API_PP_ALERT_BROADCAST_IND 0x2FA3 CVM->MCU Indicated broadcast paging from the FP
Tone control FP
CVM_FP_AUDIO_START_TONE 0x2F49 MCU ->CVM This command is used to start a tone or a tone pattern.
_REQ
CVM_FP_AUDIO_STOP_TONE 0x2F4A MCU ->CVM This command is used to stop a tone or a tone pattern.
_REQ
CVM_FP_AUDIO_START 0x2F47 MCU ->CVM This command is used to start a melody or ringer
_MELODY_REQ pattern.
CVM_FP_AUDIO_STOP_MELODY 0x2F48 MCU ->CVM This command is used stop the melody generator
_REQ
CVM_FP_AUDIO_MELODY_END_ 0x2F4B CVM ->MCU This indication indicates when a melody is played to
IND the end
CVM_FP_AUDIO_START_EE 0x2F4C MCU->CVM This command is used to start a user melody from
_MELODY_REQ eeprom. The command is the same as
CVM_TONE_START_MELODY_REQ except that
eeprom address is passed as argument instead of ringer
index
CVM_FP_AUDIO_START_EE_TON 0x2F5B MCU->CVM This command is used to start a user tone eeprom.
E_REQ The command is the same as
CVM_TONE_START_TONE_REQ except that
eeprom address is parsed as argument instead of tone
index
PP Filters
CVM_DSP_SET_FILT_COEF_REQ 0x2F52 MCU ->CVM This command is used to setup new filter coefficient
CVM_FP_LINE_DETECT_STOP 0x2F58 CVM ->MCU Disables the signal detector from the FP
_REQ
CVM_FP_LINE_DETECT_IND 0x2F59 CVM ->MCU Returns the result of the signal detector to the FP
CVM_PP_LINE_DETECT_START 0x2F54 MCU->CVM Enables the signal detector remotely from the PP
_REQ
CVM_PP_LINE_DETECT_STOP 0x2F55 MCU->CVM Disables the signal detector remotely from the PP
_REQ
CVM_PP_LINE_DETECT_IND 0x2F56 CVM ->MCU Returns the result of the signal detector remotely to the
PP
Primitive: API_PP_SETUP_REQ
Description: Setup an air-link connection from the PP to the FP (External/internal/service)
Parameters:
Type Name Description
uint8 bCallType Defines type of connection to establish:
0x00: CALLCLASS__EXT
0x01: CALLCLASS__INT
0x02: CALLCLASS_SERVICE
0x05: CALLCLASS_EXT_DATA
Switch to conference:
0x33: While having intercom with two PP’s
and a PSTN on hold, the PSTN can be
taken in to the 3-part conference by sending
the “3” key (0x33).
Primitive: API_PP_CONNECT_REQ
Description: PP answers an incoming call
Parameters: none
Primitive: API_PP_ALERT_REQ
Description: Indicate to other handset that the handset starts ringing
Parameters: none
Primitive: API_PP_RELEASE_REQ
Description: PP releases the connection
Type Name Description
// general values
0x00: RR_NORMAL
0x01: RR_UNEXPECTED_MESSAGE
0x02: RR_UNKNOWN_TRANSACTION_ID
0x03: RR_MANDATORY_IE_MISSING
0x04: RR_INVALID_IE_CONTENTS
0x05: RR_INCOMPATIBLE_SERVICE
0x06: RR_SERVICE_NOT_IMPLEMENTED
0x07: RR_NEGOTIATION_NOT_SUPPORTED
0x08: RR_INVALID_IDENTITY
0x09: RR_AUTHENTICATION_FAILED
0x0D: RR_TIMER_EXPIRY
0x0E: RR_PARTIAL_RELEASE
0x0F: RR_UNKNOWN
// user value
0x12: RR_USER_UNKNOWN
0x13: RR_USER_ALREADY_ACTIVE
0x14: RR_USER_BUSY
0x15: RR_USER_REJECTION
// temporary overload
0x31: RR_OVERLOAD
0x32: RR_INSUFFICIENT_RESOURCES
0x33: RR_INSUFFICIENT_BEARERS_AVAILABLE
0x34: RR_IWU_CONGESTION
0x7F: RR_NO_LINK
Primitive: API_PP_RELEASE_RES
Description: Confirm on the FP-initiated CVM_PP_RELEASE_IND
Parameters: none
// general values
0x00: RR_NORMAL
0x01: RR_UNEXPECTED_MESSAGE
0x02: RR_UNKNOWN_TRANSACTION_ID
0x03: RR_MANDATORY_IE_MISSING
0x04: RR_INVALID_IE_CONTENTS
0x05: RR_INCOMPATIBLE_SERVICE
0x06: RR_SERVICE_NOT_IMPLEMENTED
0x07: RR_NEGOTIATION_NOT_SUPPORTED
0x08: RR_INVALID_IDENTITY
0x09: RR_AUTHENTICATION_FAILED
0x0D: RR_TIMER_EXPIRY
0x0E: RR_PARTIAL_RELEASE
0x0F: RR_UNKNOWN
// user value
0x12: RR_USER_UNKNOWN
0x13: RR_USER_ALREADY_ACTIVE
0x14: RR_USER_BUSY
0x15: RR_USER_REJECTION
0x16: RR_USER_CALL_MODIFY
// temporary overload
0x31: RR_OVERLOAD
0x32: RR_INSUFFICIENT_RESOURCES
0x33: RR_INSUFFICIENT_BEARERS_AVAILABLE
0x34: RR_IWU_CONGESTION
0x7F: RR_NO_LINK
Primitive: API_PP_ACCESS_RIGHTS_REQ
Description: Initiates registration of the PP to a FP by searching for and sending the registration
package to the FP.
Parameters:
Type Name Description
Primitive: API_PP_DELETE_SUBS_REQ
Description: Deregisters the PP from the FP
Parameters:
Type Name Description
uint8 BSubscriptionNo Delection of subscription to delete
Selects which one of the FP’s subscribed to
the PP to delete.
Primitive: API_PP_REMOTE_DELETE_SUBS_REQ
Description: Deregisters the PP from the FP
* To make this function work, a connection should be setup between the PP and FP first.
Parameters:
Type Name Description
uint8 BSubscriptionNo Delection of subscription to delete.
Selects which one of the PP’s to delete
from the FP
0x01: PP1
0x02: PP2
0x03: PP3
0x04: PP4
0x05: PP5
0x06: PP6
Primitive: API_PP_STOP_PROTOCOL_REQ
Description: Stops the protocol from running.
Parameters: none
Primitive: API_PP_READ_RSSI_REQ
Description: Requests readout of the current RSSI (ReceivingSignalStrengthIndication) of the PP
(will be answered with a API_PP_READ_RSSI_CFM by the CVM)
Parameters: none
Primitive: API_PP_LOCKED_IND
Description: Indicates that the PP is in service (locked) with the FP
Parameters: none
Primitive: API_PP_UNLOCK_IND
Description: Indicates that the PP out of service (unlocked) with the FP
Parameters: none
Primitive: API_PP_SETUP_IND
Description: Signals incoming call to PP (intercon/external/service).
*If external call the alert on/off is following the ringercadence
else the ringercadence should be generated locally in the PP.
Parameters:
Type Name Description
uint8 bCallClass CallClass:
0x00: CALLCLASS__EXT
0x01: CALLCLASS__INT
0x02: CALLCLASS_SERVICE
0x05: CALLCLASS_EXT_DATA (HighSpeed)
uint8 bSignal Defines type ringing to perform:
Primitive: API_PP_CONNECT_IND
Description: Connection has been established
Received as confirmation on the CVM_PP_SETUP_REQ
Parameters: none
Primitive: API_PP_CONNECT_CFM
Description: Connection has been established. (Incoming call)
Received as confirmation on the CVM_PP_CONNECT_REQ
Parameters: none
Primitive: API_PP_ALERT_IND
Description: Internal/data call, FP has established the connection to other PP.
The other PP is alerting.
Parameters: none
Primitive: API_PP_ALERT_ON_IND
Description: Signals incoming call to PP. Start alert tone
*If external call the alert on/off is following the ringercadence
Parameters:
Type Name Description
uint8 bSignal 0x40: ALERTING_ON_PATTERN0 (INT_CALL)(TRANSFER_INT)
0x41: ALERTING_ON_PATTERN1 (TRANSFER_EXT)
0x42: ALERTING_ON_PATTERN2
0x43: ALERTING_ON_PATTERN3
0x44: ALERTING_ON_PATTERN4
0x45: ALERTING_ON_PATTERN5 (IN_AUTOPICKUP)
0x46: ALERTING_ON_PATTERN6 (PAGE_ALL)
0x47: ALERTING_ON_PATTERN7 (CALL_BACK)
0x48: ALERTING_ON_CONTINUOUS (EXT_CALL)
Primitive: API_PP_ALERT_OFF_IND
Description: Signals incoming call to PP. Stop alert tone
*If external call the alert on/off is following the ringercadence
Parameters:
Type Name Description
uint8 bSignal 0x4F: ALERTING_OFF
0x80: HOLD_TONE_ON
0x81: SIGNAL_CONF_ENTER_TONE_ON
0x82: SIGNAL_CONF_LEAVE_TONE_ON
Primitive: API_PP_SIGNAL_OFF_IND
Description: Signals incoming call to PP. Stop tone
Parameters:
Type Name Description
uint8 bSignal 0x3F: TONES_OFF
// general values
0x00: RR_NORMAL
0x01: RR_UNEXPECTED_MESSAGE
0x02: RR_UNKNOWN_TRANSACTION_ID
0x03: RR_MANDATORY_IE_MISSING
0x04: RR_INVALID_IE_CONTENTS
0x05: RR_INCOMPATIBLE_SERVICE
0x06: RR_SERVICE_NOT_IMPLEMENTED
0x07: RR_NEGOTIATION_NOT_SUPPORTED
0x08: RR_INVALID_IDENTITY
0x09: RR_AUTHENTICATION_FAILED
0x0D: RR_TIMER_EXPIRY
0x0E: RR_PARTIAL_RELEASE
0x0F: RR_UNKNOWN
// user value
0x11: RR_USER_DETACHED
(USER_NOT_IN_RANGE)
0x12: RR_USER_UNKNOWN
0x13: RR_USER_ALREADY_ACTIVE
0x14: RR_USER_BUSY
0x15: RR_USER_REJECTION
0x16: RR_USER_CALL_MODIFY
// temporary overload
0x31: RR_OVERLOAD
0x32: RR_INSUFFICIENT_RESOURCES
0x33: RR_INSUFFICIENT_BEARERS_AVAILABLE
0x34: RR_IWU_CONGESTION
0x7F: RR_NO_LINK
Primitive: API_PP_RELEASE_CFM
Description: Confirms the PP-initiated release
Parameters: none
// general values
0x00: RR_NORMAL
0x01: RR_UNEXPECTED_MESSAGE
0x02: RR_UNKNOWN_TRANSACTION_ID
0x03: RR_MANDATORY_IE_MISSING
0x04: RR_INVALID_IE_CONTENTS
0x05: RR_INCOMPATIBLE_SERVICE
0x06: RR_SERVICE_NOT_IMPLEMENTED
0x07: RR_NEGOTIATION_NOT_SUPPORTED
0x08: RR_INVALID_IDENTITY
0x09: RR_AUTHENTICATION_FAILED
0x0D: RR_TIMER_EXPIRY
0x0E: RR_PARTIAL_RELEASE
0x0F: RR_UNKNOWN
// user value
0x11: RR_USER_DETACHED
(USER_NOT_IN_RANGE)
0x12: RR_USER_UNKNOWN
0x13: RR_USER_ALREADY_ACTIVE
0x14: RR_USER_BUSY
0x15: RR_USER_REJECTION
0x16: RR_USER_CALL_MODIFY
// temporary overload
0x31: RR_OVERLOAD
0x32: RR_INSUFFICIENT_RESOURCES
0x33: RR_INSUFFICIENT_BEARERS_AVAILABLE
0x34: RR_IWU_CONGESTION
0x7F: RR_NO_LINK
Primitive: API_PP_ACCESS_RIGHTS_CFM
Description: Confirmation of successful registration of a PP to and FP
Parameters:
Type Name Description
uint8 bHsNr Returns the given Pp number
0x00: REJ_NO_REJECT_REASON
0x01: REJ_TPUI_UNKNOWN
0x02: REJ_IPUI_UNKNOWN
0x03: REJ_NETWORK_ASSIGNED_ID_UNKNOWN
0x05: REJ_IPEI_NOT_ACCEPTED
0x06: REJ_IPUI_NOT_ACCEPTED
0x10: REJ_AUTH_FAILED
0x11: REJ_NO_AUTH_ALGORITHM
0x12: REJ_AUTH_ALGORITHM_NOT_SUPPORTED
0x13: REJ_AUTH_KEY_NOT_SUPPORTED
0x14: REJ_UPI_NOT_ENTERED
0x17: REJ_NO_CIPHER_ALGORITHM
0x18: REJ_CIPHER_ALGORITHM_NOT_SUPPORTED
0x19: REJ_CIPHER_KEY_NOT_SUPPORTED
0x20: REJ_INCOMPATIBLE_SERVICE
0x21: REJ_FALSE_LCE_REPLY
0x22: REJ_LATE_LCE_REPLY
0x23: REJ_INVALID_TPUI
0x24: REJ_TPUI_ASSIGN_LIMIT_UNACCEPT
0x2F: REJ_UNSUFFICIENT_MEMORY
0x30: REJ_OVERLOAD
0x40: REJ_TEST_CALL_BACK_NORM_ENBLOC
0x41: REJ_TEST_CALL_BACK_NORM_PIECEWISE
0x42: REJ_TEST_CALL_BACK_EMERG_ENBLOC
0x43: REJ_TEST_CALL_BACK_EMERG_PIECEWISE
0x5F: REJ_INVALID_MESSAGE
0x60: REJ_IE_ERROR
0x64: REJ_INVALID_IE_CONTENTS
0x70: REJ_TIMER_EXPIRY
0x76: REJ_PLMN_NOT_ALLOWD
0x80: REJ_LOCATION_AREA_NOT_ALLOWED
0x81: REJ_NATIONAL_ROAMING_NOT_ALLOWED
0x2F: REJ_UNSUFFICIENT_MEMORY
-means that the FP is filled with registrations and has no
room for more.
Primitive: API_PP_DELETE_SUBS_CFM
01/20/04 3:00 PM CVM API interface V 0.156 Page 32
Copyright 2003 National Semiconductor BV Company Confidential
Het Zuiderkruis 53
5215 MV ’s-Hertogenbosch PRELIMINARY
The Netherlands
Description: Confirm on termination of the PP subscription
Parameters: none
Primitive: API_PP_REMOTE_DELETE_SUBS_CFM
Description: Remotely deregister PP from FP (remotely in/from FP to PP)
Parameters: none
bit7: CALL_STATUS_CONNECTED
1 = call established
bit6: CALL_STATUS_EXT_CALL
1 = ext call type initiated/established
bit5: CALL_STATUS_INT_CALL
1 = int call type initiated/established
bit4: CALL_STATUS_EXT_HOLD
1 = ext call on hold
bit3: CALL_STATUS_INT_HOLD
1 = int call on hold
bit2: CALL_STATUS_INT_INTERCEPT
1 = int call intercept
bit1: CALL_STATUS_EXT_INTERCEPT
1 = ext call intercept
bit0: unused
uint8 bSwBitMask The bSwBitMask indicates which units are active on the PSTNline:
Bit0: FP_SpeakerPhone
Bit1: PP1
Bit2: PP2
Bit3: PP3
Bit4: PP4
Bit5: PP5
Bit6: PP6
Bit7: SMS (*curently unused)
Primitive: API_PP_MESSAGE_WAITING_IND
Description: Sends Visual Message Waiting Indication (VMWI) status from the CVM_PP to the
MCU_PP
Parameters:
Type Name Description
uint8 bVmwiStatus 0x00: Deactivation (indicator off)
0xFF: Activation (indicator on)
Bit0: FP_SpeakerPhone
Bit1: PP1
Bit2: PP2
Bit3: PP3
Bit4: PP4
Bit5: PP5
Bit6: PP6
Bit7: SMS (*curently unused)
Primitive: API_PP_ON_KEY_IND
Description: Sends keystatus of the PP ON_KEY to the MCU
Parameters:
Type Name Description
uint8 bStatus 0x00: OnKey released
0x01: OnKey pressed
Primitive: API_PP_READ_RSSI_CFM
Description: Returns the requested readout of the current RSSI (ReceivingSignalStrengthIndication) of
the PP (requested by the API_PP_READ_RSSI_REQ command)
Parameters:
Type Name Description
uint8 bRssi Received Signal strength
0x0A: INCOMMING_CALL_RELEASED_BY_THE_FP
0x0B: INCOMMING_CALL_HAS_BEEN_ANSWERED
0x0F: ALERTING_OFF
As the fixed part can handle more simultaneous connections, an instance handler is added to
route data between the selected units.
The instances are only used by the FP. The PP does not need it as it handles only one
connection at a time. So all explanations below are seen from the FP API side.
The instance (ConnectionEI) is a parameter that is attached to all the mail send to the CVM
protocol and received from the CVM protocol.
Every connection that is established is assigned a ConnectionEI during setup
If the call is set up from the PP (incoming) the CVM will automatically assign a
ConnectionEI to the call and supply the API with it in the setup.
If the call is set up from the FP (outgoing/intercom) the ConnectionEI is assigned by the
FP_MCU.
While establishing the call and while the call is active, the selected ConnectionEI is now used
to point the mails to the right PP units.
For example if the FP has two active connections to two PP’s, each connection has its
seperate ConnectionEI. If sending IWU data to one of the PP’s the correct ConnectionEI is
supplied as parameter in the IWU mail and the CVM then automatically knows which PP to
receive the mail.
If the FP is receiving a IWU data mail from a PP (or any other type of mail) the ConnectionEI
is also supplyed. Then the FP knows which ConnectionEI to answer.
SW_EI_TYPE_OUT_AUDIO 0x70
Used when setting up an audio call from the FP to a PP or the PSTN line (assigned from FP_MCU)
SW_EI_TYPE_IN_DATA0 0x68
SW_EI_TYPE_IN_DATA1 0x69
SW_EI_TYPE_IN_DATA2 0x6a
SW_EI_TYPE_IN_DATA3 0x6b
SW_EI_TYPE_IN_DATA4 0x6c
SW_EI_TYPE_IN_DATA5 0x6d
SW_EI_TYPE_IN_DATA6 0x6e
SW_EI_TYPE_IN_DATA7 0x6f
Used when receiving an data/service call from a PP(assigned from FP_CVM)
If the FP have data connections to multiple PP’s data0...data7can be used.
Normally if only making one connection at a time, only data0 is used.
SW_EI_TYPE_OUT_DATA0 0x78
SW_EI_TYPE_OUT_DATA1 0x79
SW_EI_TYPE_OUT_DATA2 0x7a
SW_EI_TYPE_OUT_DATA3 0x7b
SW_EI_TYPE_OUT_DATA4 0x7c
SW_EI_TYPE_OUT_DATA5 0x7d
SW_EI_TYPE_OUT_DATA6 0x7e
SW_EI_TYPE_OUT_DATA7 0x7f
Used when receiving an data/service call from a FP(assigned from FP_MCU)
If the FP have data connections to multiple PP’s data0...data7can be used.
Normally if only making one connection at a time, only data0 is used.
SW_EI_TYPE_AUDIO_EXT 0x00
This special ConnectionEI is only used to send receive data from the FP to a PP that is connected to the PSTN
line (External call).
In this case the PP and the PSTN that has the connection. The FP_API was not involved in the setup of the ext
call and does not know if its active or not.
For this the CVM_FP_LINE_STATUS_IND is added to give the FP_API information of the current PSTN line
state.
CVM Module
ConEI = 0x00 CVM Module
FP_MCU API FP API (Iwu data from FP API)
API PP_MCU
PP
(SpkPhone)
ConEI = 0x00
(Iwu data redirected)
ConEI = 0x00
(Iwu data from PP API)
CVM Module
CVM Module
PP_MCU FP
PP
PSTN line
API
Primitive: API_FP_INVOKE_ACCESS_RIGHTS_REQ
Description: Enables FP for registration
*can also be done by pressing registrationkey on FP
Parameters:
Type Name Description
uint8 bAccessRight Enabels/disables access rights in FP:
0x00: ACCESS_RIGHTS_DISABLED
0x01: ACCESS_RIGHTS_ENABLED
Primitive: API_FP_REMOTE_DELETE_SUBS_REQ
Description: Deregisters the PP from the FP
Parameters:
Type Name Description
uint8 BSubscriptionNo Delection of subscription to delete.
Selects which one of the PP’s to delete
from the FP
0x01: PP1
0x02: PP2
0x03: PP3
0x04: PP4
0x05: PP5
0x06: PP6
Primitive: API_FP_SETUP_ADVANCED_REQ
Description: Setup an air-link connection from the FP to the PP
Same as API_FP_SETUP_REQ, but with additional parameters and options
Parameters:
Type Name Description
uint8 bConnectionEI Connection instance
* see instance description for info on instance
numbering
0xXX: CALLCLASS_EXT_GROUP
bCallClass = CALLCLASS__EXT
Description: If callclass EXT is selected the bDstCallerId selects
bDstCallerId =
Type Name Description
uint8 bDstCallerId Selects the Pp number to call directly
0x00: SpkPhone
0x01: Pp1
...
0x06: Pp2
...
0xC8: Pp200 (*0x07-0xC8 reserved for more registrations)
0xF8: star ‘*’
0xF9: square #’
0xFF: Select overlap sending (dialing with KEYPAD_REQ’s)
0xF0: Logical Line A
bCallClass = CALLCLASS__EXT_GROUP
Description: If callclass EXT_GROUP is selected the bCallerDst selects the ringergroup or directly
holds a bitmask with info on which Pp’s to call.
Depending on the highest bit in bDstCallerId the groups defined in eeprom is selected or
the bitmask suplied directly in bDstCallerId is used.
bDstCallerId =
Type Name Description
uint8 bDstCallerId bit7 = 1: GroupId is selected from eeprom.
bit0-6:
0x01: Ringer group 1
0x02: Ringer group 2
...
0x06: Ringer group 6
...
uint8 bDstCallerId bit7 = 0: GroupId is selected from bitmask
bCallClass = CALLCLASS_SERVICE
bCallClass = CALLCLASS__EXT_DATA
Description: If callclass EXT is selected the bDstCallerId selects
bDstCallerId =
Type Name Description
uint8 bDstCallerId Selects the Pp number to call drectly
0x00: SpkPhone
0x01: Pp1
0x02: Pp2
...
0x06: Pp6
...
Primitive: API_FP_ALERT_ON_REQ
Description: Simulates ringvoltage on from the FP
*can be used to controll linging when no physical lineinterface is mounted in the FP
Parameters:
Type Name Description
uint8 bConnectionEI Connection instance
* see instance descriptionfor info on instance
numbering
Primitive: API_FP_ALERT_OF_REQ
Description: Simulates ringvoltage off from the FP
*can be used to controll linging when no physical lineinterface is mounted in the FP
Parameters:
Type Name Description
uint8 bConnectionEI Connection instance
* see instance description for info on instance
numbering
Primitive: API_FP_ALERT_DISTINTIVE_OFF_REQ
Description: Simulates ringvoltage from distintive ringing off from the FP
*can be used to controll linging when no physical lineinterface is mounted in the FP
01/20/04 3:00 PM CVM API interface V 0.156 Page 44
Copyright 2003 National Semiconductor BV Company Confidential
Het Zuiderkruis 53
5215 MV ’s-Hertogenbosch PRELIMINARY
The Netherlands
Parameters:
Type Name Description
uint8 bConnectionEI Connection instance
* see instance description for info on instance
numbering
Primitive: API_FP_KEYPAD_REQ
Description: Send a string of dial digits from the FP to the line
Parameters:
Type Name Description
uint8 bConnectionEI Connection instance
* see instance description for info on
instance numbering
uint8 bNumOfDigits Defines the number of digits in the digit
string (digits are send in ascii)
uint8 bDigits[] String with the digits to dial
0x30 = KEY_0
0x31 = KEY_1
...
0x39 = KEY_9
0x2A = STAR_KEY
0x23 = SQUARE_KEY
Switch to conference:
0x33: While having intercom with the
Spkphone, a PP and a PSTN on hold, the
PSTN can be taken in to the 3-part
conference by sending the “3” key (0x33).
Primitive: API_FP_CONNECT_REQ
Description: FP answers an incoming call
Parameters:
uint8 bConnectionEI Connection instance
* see instance description for info on
instance numbering
// general values
0x00: RR_NORMAL
0x01: RR_UNEXPECTED_MESSAGE
0x02: RR_UNKNOWN_TRANSACTION_ID
0x03: RR_MANDATORY_IE_MISSING
0x04: RR_INVALID_IE_CONTENTS
0x05: RR_INCOMPATIBLE_SERVICE
0x06: RR_SERVICE_NOT_IMPLEMENTED
0x07: RR_NEGOTIATION_NOT_SUPPORTED
0x08: RR_INVALID_IDENTITY
0x09: RR_AUTHENTICATION_FAILED
0x0D: RR_TIMER_EXPIRY
0x0E: RR_PARTIAL_RELEASE
0x0F: RR_UNKNOWN
// user value
0x11: RR_USER_DETACHED
(USER_NOT_IN_RANGE)
0x12: RR_USER_UNKNOWN
0x13: RR_USER_ALREADY_ACTIVE
0x14: RR_USER_BUSY
0x15: RR_USER_REJECTION
0x16: RR_USER_CALL_MODIFY
// temporary overload
0x31: RR_OVERLOAD
0x32: RR_INSUFFICIENT_RESOURCES
0x33: RR_INSUFFICIENT_BEARERS_AVAILABLE
0x34: RR_IWU_CONGESTION
0x7F: RR_NO_LINK
Primitive: API_FP_RELEASE_RES
Description: Confirm on the PP-initiated CVM_FP_RELEASE_IND
Parameters:
uint8 bConnectionEI Connection instance
* see instance description for info on
instance numbering
// general values
0x00: RR_NORMAL
0x01: RR_UNEXPECTED_MESSAGE
0x02: RR_UNKNOWN_TRANSACTION_ID
0x03: RR_MANDATORY_IE_MISSING
0x04: RR_INVALID_IE_CONTENTS
0x05: RR_INCOMPATIBLE_SERVICE
0x06: RR_SERVICE_NOT_IMPLEMENTED
0x07: RR_NEGOTIATION_NOT_SUPPORTED
0x08: RR_INVALID_IDENTITY
0x09: RR_AUTHENTICATION_FAILED
0x0D: RR_TIMER_EXPIRY
0x0E: RR_PARTIAL_RELEASE
0x0F: RR_UNKNOWN
// user value
0x11: RR_USER_DETACHED
(USER_NOT_IN_RANGE)
0x12: RR_USER_UNKNOWN
0x13: RR_USER_ALREADY_ACTIVE
0x14: RR_USER_BUSY
0x15: RR_USER_REJECTION
0x16: RR_USER_CALL_MODIFY
// temporary overload
0x31: RR_OVERLOAD
0x32: RR_INSUFFICIENT_RESOURCES
0x33: RR_INSUFFICIENT_BEARERS_AVAILABLE
0x34: RR_IWU_CONGESTION
0x7F: RR_NO_LINK
Primitive: API_FP_STOP_PROTOCOL_REQ
Description: Stops the protocol from running.
Parameters: none
Primitive: API_FP_SETUP_IND
Description: Signals incoming call to FP (intercon/external/service).
*If external call the alert on/off is following the ringercadence
else the ringercadence should be generated locally in the FP.
Parameters:
Type Name Description
uint8 bConnectionEI Connection instance
* see instance description for info on instance numbering
uint8 bCallClass CallClass:
0x00: CALLCLASS__EXT
0x01: CALLCLASS__INT
0x02: CALLCLASS_SERVICE
0x05: CALLCLASS_EXT_DATA (HighSpeed)
uint8 bSignal Defines type ringing to perform:
Primitive: API_FP_CONNECT_IND
Description: Connection has been established.
Received as confirmation on the CVM_FP_SETUP_REQ
Parameters:
uint8 bConnectionEI Connection instance
* see instance description for info on
instance numbering
Primitive: API_FP_CONNECT_CFM
Description: Connection has been established. (Incoming call)
Received as confirmation on the CVM_FP_CONNECT_REQ
Parameters:
uint8 bConnectionEI Connection instance
* see instance description for info on
instance numbering
Primitive: API_FP_SW_CALL_PROC_IND
Description: Fp simulated ringing has been initiated to the PP’s
Waiting for PP to hook off
Parameters:
uint8 bConnectionEI Connection instance
* see instance description for info on
instance numbering
Primitive: API_FP_ALERT_IND
Description: Internal/data call, FP has established the connection to other PP.
The other PP is alerting.
Parameters:
uint8 bConnectionEI Connection instance
* see instance description for info on
instance numbering
Primitive: API_FP_ALERT_ON_IND
Description: Signals incoming call to FP. Start alert tone
*If external call the alert on/off is following the ringercadence
Parameters:
Type Name Description
uint8 bConnectionEI Connection instance
* see instance description for info on instance numbering
uint8 bSignal 0x40: ALERTING_ON_PATTERN0 (INT_CALL)(TRANSFER_INT)
0x41: ALERTING_ON_PATTERN1 (TRANSFER_EXT)
0x42: ALERTING_ON_PATTERN2
0x43: ALERTING_ON_PATTERN3
0x44: ALERTING_ON_PATTERN4
0x45: ALERTING_ON_PATTERN5 (IN_AUTOPICKUP)
0x46: ALERTING_ON_PATTERN6 (PAGE_ALL)
0x47: ALERTING_ON_PATTERN7 (CALL_BACK)
0x48: ALERTING_ON_CONTINUOUS (EXT_CALL)
Primitive: API_FP_ALERT_OFF_IND
Description: Signals incoming call to FP. Stop alert tone
*If external call the alert on/off is following the ringercadence
Parameters:
Primitive: API_FP_SIGNAL_OFF_IND
Description: Signals incoming call to FP. Stop inband tone
Parameters:
Type Name Description
uint8 bConnectionEI Connection instance
* see instance description for info on instance
numbering
uint8 bSignal 0x3F: TONES_OFF
// general values
0x00: RR_NORMAL
0x01: RR_UNEXPECTED_MESSAGE
0x02: RR_UNKNOWN_TRANSACTION_ID
0x03: RR_MANDATORY_IE_MISSING
0x04: RR_INVALID_IE_CONTENTS
0x05: RR_INCOMPATIBLE_SERVICE
0x06: RR_SERVICE_NOT_IMPLEMENTED
0x07: RR_NEGOTIATION_NOT_SUPPORTED
0x08: RR_INVALID_IDENTITY
0x09: RR_AUTHENTICATION_FAILED
0x0D: RR_TIMER_EXPIRY
0x0E: RR_PARTIAL_RELEASE
0x0F: RR_UNKNOWN
// user value
0x11: RR_USER_DETACHED
(USER_NOT_IN_RANGE)
0x12: RR_USER_UNKNOWN
0x13: RR_USER_ALREADY_ACTIVE
0x14: RR_USER_BUSY
0x15: RR_USER_REJECTION
0x16: RR_USER_CALL_MODIFY
// temporary overload
0x31: RR_OVERLOAD
0x32: RR_INSUFFICIENT_RESOURCES
0x33: RR_INSUFFICIENT_BEARERS_AVAILABLE
0x34: RR_IWU_CONGESTION
0x7F: RR_NO_LINK
Primitive: API_FP_RELEASE_CFM
Description: Confirms the FP-initiated release
Parameters:
uint8 bConnectionEI Connection instance
* see instance description for info on instance
numbering
// general values
0x00: RR_NORMAL
0x01: RR_UNEXPECTED_MESSAGE
0x02: RR_UNKNOWN_TRANSACTION_ID
0x03: RR_MANDATORY_IE_MISSING
0x04: RR_INVALID_IE_CONTENTS
0x05: RR_INCOMPATIBLE_SERVICE
0x06: RR_SERVICE_NOT_IMPLEMENTED
0x07: RR_NEGOTIATION_NOT_SUPPORTED
0x08: RR_INVALID_IDENTITY
0x09: RR_AUTHENTICATION_FAILED
0x0D: RR_TIMER_EXPIRY
0x0E: RR_PARTIAL_RELEASE
0x0F: RR_UNKNOWN
// user value
0x11: RR_USER_DETACHED
(USER_NOT_IN_RANGE)
0x12: RR_USER_UNKNOWN
0x13: RR_USER_ALREADY_ACTIVE
0x14: RR_USER_BUSY
0x15: RR_USER_REJECTION
0x16: RR_USER_CALL_MODIFY
// temporary overload
0x31: RR_OVERLOAD
0x32: RR_INSUFFICIENT_RESOURCES
0x33: RR_INSUFFICIENT_BEARERS_AVAILABLE
0x34: RR_IWU_CONGESTION
0x7F: RR_NO_LINK
bit7: CALL_STATUS_CONNECTED
1 = call established
bit6: CALL_STATUS_EXT_CALL
1 = ext call type initiated/established
bit5: CALL_STATUS_INT_CALL
1 = int call type initiated/established
bit4: CALL_STATUS_EXT_HOLD
1 = ext call on hold
bit3: CALL_STATUS_INT_HOLD
1 = int call on hold
bit2: CALL_STATUS_INT_INTERCEPT
1 = int call intercept
bit1: CALL_STATUS_EXT_INTERCEPT
1 = ext call intercept
bit0: unused
Primitive: CVM_FP_LINE_STATUS_IND
Description: Sends line status to the FP_MCU
Parameters:
uint8 bLineStatus The Linestatus is bitmasked and indicates which
units are active on the PSTNline:
Bit0: FP_SpeakerPhone
Bit1: PP1
Bit2: PP2
Bit3: PP3
Bit4: PP4
Bit5: PP5
Bit6: PP6
Bit7: SMS (*curently unused)
Primitive: CVM_FP_SW_AUDIO_MUTE_IND
Description: BasControl requests FP_MCU to mute audio
Parameters:
uint8 bConnectionEI Connection instance
* see instance description for info on instance
numbering
uint8 bCtrlCmd 0x05: SW_AUDIO_CMD_MUTE
- Should in a normal applicartion be answered by a
CVM_FP_AUDIO_MUTE_REQ
0x06: SW_AUDIO_CMD_UNMUTE
- Should in a normal applicartion be answered by a
CVM_FP_AUDIO_UNMUTE_REQ
Primitive: API_FP_DELETE_SUBS_CFM
Description: Confirmation on deregistration from the FP
Parameters: none
Primitive: API_FP_REG_MODE_IND
Description: Indicates a change in registration mode to the MCU
Parameters:
uint8 bStatus 0x12: SW_STATUS_REGMODE_BEGIN
0x13: SW_STATUS_REGMODE_END
0x21: SW_STATUS_ACCRIGHTS_TERM
0x22: SW_STATUS_ACCRIGHTS_ACCEPT
Primitive: API_FP_MESSAGE_WAITING_IND
Description: Sends Visual Message Waiting Indication (VMWI) status from the CVM_FP to the
MCU_FP
Parameters:
Type Name Description
uint8 bVmwiStatus 0x00: Deactivation (indicator off)
0xFF: Activation (indicator on)
Primitive: CVM_BUS_SELECT_REQ
Description: Selects API bus mode (UART or SPI)
*The CVM starts up in UART mode as default
Parameters:
Type Name Description
uint8 bDriver Bus selection:
0x00: UART
0x01: SPI
Primitive: CVM_BUS_DISABLE_REQ
Description: Disables bus driver (UART or SPI)
Parameters:
Type Name Description
uint8 bDriver Bus selection:
0x00: UART
0x01: SPI
Primitive: API_PP_IWU_DATA_IND
Description: Receives general user data from the FP to the PP
* To make this function work, a connection should be setup between the PP and FP first.
Parameters:
Type Name Description
uint8 bIwuLength Length of the IwuData
uint8 bIwuData IwuData
Primitive: API_FP_IWU_DATA_IND
Description: Receives general user data from the PP to the FP
* To make this function work, a connection should be setup between the PP and FP first.
Parameters:
Type Name Description
uint8 bConnection EI Connection Instance
uint8 bIwuLength Length of the IwuData
uint8 bIwuData IwuData
Primitive: API_PP_UNITDATA_IND
Description: Receives broadcast general user data from the FP to the PP while no connection is
established
Parameters:
Type Name Description
uint8 bDataLength NoOf bytes received
uint8 bData Data received
Primitive: API_PP_DATA_SEND_REQ
Description: Sends general user data from the PP to the FP
* To make this function work, a connection with callclass CALLCLASS_EXT_DATA
should be setup between the PP and FP first.
Parameters:
Type Name Description
uint8 bLength Length of the Data
uint8 bData[] Data
Primitive: API_PP_DATA_RECEIVE_READY_REQ
Description: Informs CVM that MCU is ready to receive data. MCU may send up to five to indicate it
is ready to receive 5 packets.
* To make this function work, a connection with callclass CALLCLASS_EXT_DATA
should be setup between the PP and FP first.
Parameters: None
Primitive: API_PP_DATA_RECEIVE_IND
Description: Receives general user data from the FP to the PP
* To make this function work, a connection with callclass CALLCLASS_EXT_DATA
should be setup between the PP and FP first.
Parameters:
Type Name Description
uint8 bLength Length of the Data
uint8 bData[] Data
uint8 bData Data received
Primitive: API_FP_DATA_SEND_REQ
Description: Sends general user data from the FP to the PP
* To make this function work, a connection with callclass CALLCLASS_EXT_DATA
should be setup between the PP and FP first.
Parameters:
Type Name Description
uint8 bConnectionEI Connection instance
uint8 bLength Length of the Data
uint8 bData[] Data
Primitive: API_FP_DATA_RECEIVE_IND
Description: Receives general user data from the FPP to the FP
* To make this function work, a connection with callclass CALLCLASS_EXT_DATA
should be setup between the PP and FP first.
Parameters:
Type Name Description
uint8 bConnectionEI Connection instance
uint8 bLength Length of the Data
uint8 bData[] Data
Primitive: CVM_EEPROM_WRITE_REQ
Description: Writes data to the eeprom in the CVM module
Parameters:
Type Name Description
uint16 wDataAddress Eeprom adddress to write the data to
uint8 bDataLength Length of the data block to be written
uint8[] bData Data block to be written
Primitive: CVM_EEPROM_READ_REQ
Description: Reads data from the eeprom in the CVM module
Parameters:
Type Name Description
uint16 wDataAddress Eeprom adddress to read the data from
uint8 bDataLength Length of the data block to be read
Primitive: CVM_EEPROM_READ_CFM
Description: Confirm mail from the CVM module holding the requested eeprom read data
Parameters:
Type Name Description
uint8 bDataLength Length of the read data block
uint8[] bData Data block
Primitive: CVM_REMOTE_EEP_READ_CFM
Description: Confirm mail from the FP CVM module holding the eeprom read data, requested from the
PP
* To make this function work, a connection should be setup between the PP and FP first.
Parameters:
Type Name Description
uint8 bDataLength Length of the read data block
uint8[] bData Data block
CVM_SET_PORT_REQ
Description: Controls a single (unused by the CVM module) port pin on the CVM module
Parameters:
Type Name Description
uint8 bPort Pin no. on IO port to change
PP:
P0_3 General I/O (shared with PCM)
P0_4 General I/O (shared with PCM)
P0_6 General I/O (shared with PCM)
P0_7 General I/O (shared with PCM)
FP:
P0_3 General I/O (shared with PCM)
P0_4 General I/O (shared with PCM)
P0_6 General I/O (shared with PCM)
P0_7 General I/O (shared with PCM)
* Because port P0 is also used for the PCM I/F, the PCM function
should be disabled before use as I/O.
The CVM does this automatically when calling the
CVM_SET_PORT_DIR_REQ for the port pin
*the setport command does not change the direction of the I/O
port automatically. So to make it function the port direction should
be set to output first using the CVM_SET_PORT_DIR_REQ
command.
*the setport command does not change the direction of the I/O
port automatically. So to make it function the port direction should
be set to input first using the CVM_SET_PORT_DIR_REQ
command.
*Port Read requests outside the valid ports and pins are possible,
but the results might be invalid !
CVM_READ_PORT_CFM
Description: Return status of requested port pin on the CVM module
Parameters:
Type Name Description
uint8[] bData Pin state indication:
TRUE = HIGH
FALSE = LOW
CVM_SET_PORT_DIR_REQ
Description: Sets the direction of the user accessible IO ports
Parameters:
Type Name Description
uint8 bPort IO Port to read
TRUE = Pullup
FALSE = Pull down
*the setport command does not change the direction of the I/O
port automatically. So to make it function the port direction should
be set to output first using the CVM_SET_PORT_DIR_REQ
command.
*the setport command does not change the direction of the I/O
port automatically. So to make it function the port direction should
be set to input first using the CVM_SET_PORT_DIR_REQ
command.
*Port Read requests outside the valid ports and pins are possible,
but the results might be invalid !
CVM_ REMOTE_SET_PORT_DIR_REQ
Description: Sets the direction of the user accessible IO ports on the FP_CVM from the PP_MCU
(Requires a service connection)
Parameters:
Type Name Description
uint8 bPort IO Port to read
TRUE = Pullup
FALSE = Pull down
CVM_FP_DSP_COMMAND_REQ
Description: This command is used to send DSP command packages to the Fp DSP
Parameters:
Type Name Description
uint8 bCommand Setects the command to follow in the dsp call
0x00: CMD_DSP_CONNECT
0x01: CMD_DSP_DISCONNECT
0x02: CMD_DSP_MUTE
0x03: CMD_DSP_UNMUTE
0x04: CMD_DSP_MUTE_DEVICE
0x05: CMD_DSP_UNMUTE_DEVICE,
0x06: CMD_DSP_SWITCH_TONE
0x07: CMD_DSP_SWITCH_OUTPUT
0x08: CMD_DSP_WRITE_SW_POINT
0x09: CMD_DSP_READ_SW_POINT
0x0A: CMD_DSP_START_MELODY
0x0B: CMD_DSP_START_TONE_PATTERN
0x0C: CMD_DSP_STOP_TONE_GEN
0x0D: CMD_DSP_START_DTMF_TONE
0x0E: CMD_DSP_STOP_DTMF_TONE
0x0F: CMD_DSP_INIT_BLOCK
0x10: CMD_DSP_ACTIVATE_BLOCK
0x11: CMD_DSP_DEACTIVATE_BLOCK
uint8/uint16 bData[] Parameters to the individual DSP commands
*see below
bCommand = CMD_DSP_CONNECT
Description: Connects the selected audioconnection
bData[] =
Type Name Description
uint8 ConId
uint8 Attrib
bCommand = CMD_DSP_DISCONNECT
Description: Disconnects the selected audiorouting and returns status as CMD_DSP_DISCONNECT
bData[] =
Type Name Description
uint8 ConId
uint8 Attrib
bCommand = CMD_DSP_MUTE
Description: Mutes the selected audiorouting
bData[] =
Type Name Description
uint8 ConId
uint8 Attrib
bCommand = CMD_DSP_UNMUTE
Description: UnMutes the selected audiorouting
bData[] =
Type Name Description
uint8 ConId
uint8 Attrib
bCommand = CMD_DSP_MUTE_DEVICE
01/20/04 3:00 PM CVM API interface V 0.156 Page 70
Copyright 2003 National Semiconductor BV Company Confidential
Het Zuiderkruis 53
5215 MV ’s-Hertogenbosch PRELIMINARY
The Netherlands
Description: Mutes the selected device
bData[] =
Type Name Description
uint8 Attrib
bCommand = CMD_DSP_UNMUTE_DEVICE
Description: UnMutes the selected device
bData[] =
Type Name Description
uint8 Attrib
bCommand = CMD_DSP_SWITCH_TONE
Description: Switches the tones on the individual tone generators
bData[] =
Type Name Description
uint8 ToneGenId
uint8 ToneAttrib
uint8 OnOff
bCommand = CMD_DSP_SWITCH_OUTPUT
Description: Switches the tones on the individual audio blocks
bData[] =
Type Name Description
uint8 ToneGenId
uint16 BlockOutput
uint8 OnOff
bCommand = CMD_DSP_WRITE_SW_POINT
Description: Writes to the selected switchpoint
bData[] =
Type Name Description
uint16 block_Addr
uint16 inp_addr
uint16 outp_addr
bCommand = CMD_DSP_READ_SW_POINT
Description: Reads the selected switch point and returns it in the CVM_FP_DSP_COMMAND_CFM
bData[] =
Type Name Description
uint16 block_addr
uint16 inp_addr
bCommand = CMD_DSP_START_MELODY
Description: Starts a predefined melody placed in eeprom.
*melody definition is same format as normal eeprom melodies
bData[] =
Type Name Description
uint8 ToneGenId
uint8 ToneAttrib
uint16 MelodyArrStartAddr
bCommand = CMD_DSP_START_TONE_PATTERN
Description: Starts a predefined tone pattern placed in eeprom.
*tone definition is same format as normal eeprom melodies
bData[] =
01/20/04 3:00 PM CVM API interface V 0.156 Page 71
Copyright 2003 National Semiconductor BV Company Confidential
Het Zuiderkruis 53
5215 MV ’s-Hertogenbosch PRELIMINARY
The Netherlands
Type Name Description
uint8 ToneGenId
uint8 ToneAttrib
uint16 TonePatternArrStartAddr
bCommand = CMD_DSP_STOP_TONE_GEN
Description: Stops a running melody or tone
bData[] =
Type Name Description
uint8 ToneGenId
bCommand = CMD_DSP_START_DTMF_TONE
Description: Starts a DTMF tone on the selected tonegenrator
bData[] =
Type Name Description
uint8 ToneGenId
uint8 ToneAttrib
uint8 DtmfTone
uint16 DtmfTwist
bCommand = CMD_DSP_STOP_DTMF_TONE
Description: Starts a DTMF tone on the selected tonegenrator
bData[] =
Type Name Description
uint8 ToneGenId
bCommand = CMD_DSP_ACTIVATE_BLOCK
Description: Activates a predefined block in the DSP
bData[] =
Type Name Description
uint8 BlockId
bCommand = CMD_DSP_DEACTIVATE_BLOCK
Description: Activates a predefined block in the DSP
bData[] =
Type Name Description
uint8 BlockId
0x00: CMD_DSP_CONNECT
0x01: CMD_DSP_DISCONNECT
0x02: CMD_DSP_MUTE
0x03: CMD_DSP_UNMUTE
0x04: CMD_DSP_MUTE_DEVICE
0x05: CMD_DSP_UNMUTE_DEVICE,
0x06: CMD_DSP_SWITCH_TONE
0x07: CMD_DSP_SWITCH_OUTPUT
0x08: CMD_DSP_WRITE_SW_POINT
0x09: CMD_DSP_READ_SW_POINT
0x0A: CMD_DSP_START_MELODY
0x0B: CMD_DSP_START_TONE_PATTERN
0x0C: CMD_DSP_STOP_TONE_GEN
0x0D: CMD_DSP_START_DTMF_TONE
0x0E: CMD_DSP_STOP_DTMF_TONE
0x0F: CMD_DSP_INIT_BLOCK
0x10: CMD_DSP_ACTIVATE_BLOCK
0x11: CMD_DSP_DEACTIVATE_BLOCK
uint8/uint16 bData[] Parameter results on the individual DSP command
requests
*see below
bCommand = CMD_DSP_CONNECT
Description: Returns new status on the selected connection selected by CVM_DSP_CONNECT
request command
bData[] =
Type Name Description
uint8 bStatus
bCommand = CMD_DSP_DISCONNECT
Description: Returns new status on the selected connection selected by CVM_DSP_DISCONNECT
request command
bData[] =
Type Name Description
uint8 bStatus
bCommand = CMD_DSP_READ_SW_POINT
Description: Returns status of the switchpoint requested by CMD_DSP_READ_SW_POINT request
command
bData[] =
Type Name Description
uint8 bStatus
The audio task is designed as a state machine including the following states:
CVM_PP_AUDIO_CLOSE_REQ
CVM_PP_AUDIO_OPEN_HANDSFREE_REQ
CVM_PP_AUDIO_CLOSE_REQ CVM_PP_AUDIO_OPEN_HANDSFREE_REQ
if (HeadsetPlug==FALSE)
CVM_PP_AUDIO_CLOSE_HANDSFREE_REQ
CVM_PP_AUDIO_OPEN_REQ
CVM_PP_AUDIO_CLOSE_REQ
CVM_PP_AUDIO_HS_PLUG_IND = 0/1
if (HeadsetPlug==TRUE)
CVM_PP_AUDIO_OPEN_REQ CVM_PP_AUDIO_OPEN_HANDSFREE_REQ
Headset Audio
Only the audio mails defined in the individual states are accepted. Other mails will be ignored
Primitive: CVM_PP_AUDIO_CLOSE_REQ
Description: This command is used to close audio. The audiotask state machine will return to idle state
as result of this command
Valid in EARPIECE_AUDIO, HANDSFREE_AUDIO, HEADSET_AUDIO
AudioStates:
Parameters: None
Primitive: CVM_PP_AUDIO_SET_VOLUME_REQ
Description: The command is used to adjust the audio volume. The volume is adjusted in steps in the
range 0 to 9
Valid in EARPIECE_AUDIO, HANDSFREE_AUDIO, HEADSET_AUDIO
AudioStates:
Parameters:
Type Name Description
uint8 bVolIndex Volume index step
Range 0 to 9
Primitive: CVM_PP_AUDIO_MUTE_MIC_REQ
Description: Mutes the Microphone
Parameters:
Primitive: CVM_PP_AUDIO_UNMUTE_MIC_REQ
Description: Unmutes the Microphone
Parameters: None
Primitive: CVM_PP_AUDIO_OPEN_HANDSFREE_REQ
Description: This command is used to enable the handset speakerphone mode. The state machine enters
the Handsfree State after processing the command
Parameters: None
Primitive: CVM_PP_AUDIO_CLOSE_HANDSFREE_REQ
Description: This command is used to disable the handset speakerphone mode.
Parameters: None
Primitive: CVM_PP_AUDIO_OPEN_ADPCM_OFF_REQ
Description: This command is used to open the audiopath without having a valid MAC connection.
Because the ADPCM buffers are not valid without a MAC connection, The audio must
not be connected to the ADPCM buffers in this case. It is possible to switch in the
ADPCM when a valid MAC connection is present with a normal
CVM_PP_AUDIO_OPEN_REQ. The command can for example be used in when dial
tones should be generated internally in the PP before and actual connection is made and in
WT mode
Parameters: None
Primitive: CVM_PP_AUDIO_HS_PLUG_IND
Description: This indication is used to switch audio into and out of headset mode. When a headset is
connected / disconnected the MCU will be notified by the CVM headset detection logic.
Base on this indication the MCU can send this indication to switch audio to/from the
headset.
Valid in AllStates
AudioStates:
Parameters:
Type Name Description
uint8 bHeadsetState On :1 Off :0
The audio task is designed as a state machine including the following states:
Primitive: CVM_FP_AUDIO_OPEN_REQ
Description: This command is used to open audio in the FP speakerphone. The Acoustic echocanceller
can be enabled/disabled by parameter.
Parameters:
Type Name Description
uint8 bSelect 0x00: SPK_AEC_ENABLED
0x01: SPK_AEC_DISABLED
0x02: LINE_LEC_ENABLED
0x03: LINE_LEC_DISABLED
Primitive: CVM_FP_AUDIO_CLOSE_REQ
Description: This command is used to close audio.
Parameters:
Type Name Description
uint8 bSelect 0x00: SPK_AEC_ENABLED
0x01: SPK_AEC_DISABLED
0x02: LINE_LEC_ENABLED
0x03: LINE_LEC_DISABLED
Primitive: CVM_FP_AUDIO_SET_VOLUME_REQ
Description: The command is used to adjust the audio volume.
The volume is adjusted in steps in the range 0 to 9
Parameters:
Type Name Description
uint8 bVolIndex Volume index step
Range 0 to 9
Primitive: CVM_FP_AUDIO_MUTE_REQ
Description: Mutes the Rx or Tx direction
Parameters:
Type Name Description
uint8 MuteAttrib 0x00: mute SPKPHONE in Rx direction
0x01: mute SPKPHONE in Tx dirention
0x02: mute SPKPHONE in Both directions
0x03: mute LINE
Primitive: CVM_FP_AUDIO_UNMUTE_REQ
Description: Mutes the Rx or Tx direction
Parameters:
Type Name Description
uint8 MuteAttrib 0x00: unmute SPKPHONE in Rx direction
0x01: unmute SPKPHONE in Tx dirention
0x02: unmute SPKPHONE in Both directions
0x03: unmute LINE
Primitive: CVM_PP_AUDIO_START_TONE_REQ /
CVM_FP_AUDIO_START_TONE_REQ
Description: This command is used to start a tone or a tone pattern.
Parameters:
Type Name Description
uint8 bToneIndex 0x00: TONE_KEYSOUND_ID
0x01: TONE_KEY_ERR_ID
0x02: TONE_NO_NETWORK_ID
0x03: TONE_FIRST_LOC_ID
0x04: TONE_FATAL_ERR_ID
0x05: TONE_NEW_MAIL_ID
0x06: TONE_URGENT_MAIL_ID
0x07: TONE_LOW_BATT_ID
0x08: TONE_SUBS_FAIL_ID
0x09: TONE_ALARM_SOUND_ID
0x0a: TONE_MIC_MUTE_ID
0x0b: TONE_MSG_WAITING_ID
0x0c: TONE_TEST_500_ID
0x0d: TONE_TEST_1000_ID
0x0e: TONE_TEST_3000_ID
0x0f: TONE_RING_BACK_ID
0x10: TONE_NETWORK_CONGESTION_ID
0x11: TONE_DIAL_ID
0x12: TONE_BUSY_ID
0x13: TONE_CALL_WAITING_ID
0x14: TONE_CONFERENCE_ID
Primitive: CVM_PP_AUDIO_STOP_TONE_REQ/
CVM_FP_AUDIO_STOP_TONE_REQ
Description: This command is used to stop a tone or a tone pattern.
Parameters: none
Primitive: CVM_PP_AUDIO_START_MELODY_REQ/
CVM_FP_AUDIO_START_MELODY_REQ
Description: This command is used to start a melody or ringer pattern.
Parameters:
Type Name Description
uint8 bRingerIndex 0x00: Predefined melody #1
0x01: Predefined melody #2
0x02: Predefined melody #3
bFollowCadence
Primitive: CVM_PP_AUDIO_MELODY_END_IND/
CVM_PP_AUDIO_MELODY_END_IND
Description: This command is send to the MCU when a stated melody has been played to the end and
has stopped
Parameters: none
Melody Header
Melody data
Melody Header
The Melody Header is structured an array of the following type
typedef struct
{
uint16 Bpm;
uint8 Loop;
uint8 Length;
uint8 PolyTones; // MAX 3
} MelodyEntryHeader;
Bpm - Beat per minute, indicates the overall speed of the melody
Loop – indicates how many times the melody should loop before stopping
typedef struct
{
DspToneType Tone;
uint8 Duration;
} DspNodeType;
typedef enum
{
silent,
c4_Tone, c4u_Tone, d4_Tone, d4u_Tone, e4_Tone, f4_Tone,
f4u_Tone, g4_Tone, g4u_Tone, a4_Tone, a4u_Tone, b4_Tone,
// octave 5 (12 tones)
c5_Tone, c5u_Tone, d5_Tone, d5u_Tone, e5_Tone, f5_Tone,
f5u_Tone, g5_Tone, g5u_Tone, a5_Tone, a5u_Tone, b5_Tone,
// octave 6 (12 tones)
c6_Tone, c6u_Tone, d6_Tone, d6u_Tone, e6_Tone, f6_Tone,
f6u_Tone, g6_Tone, g6u_Tone, a6_Tone, a6u_Tone, b6_Tone,
// octave 7 (12 tones) // Use only for 16 sample rate
c7_Tone, c7u_Tone, d7_Tone, d7u_Tone, e7_Tone, f7_Tone,
f7u_Tone, g7_Tone, g7u_Tone, //a7_Tone, a7u_Tone, b7_Tone,
}ENUM8(DspToneType);
Tone A4 corresponds to a frequency of 440 Hz. For a detailed overview of the tone please
refer to Appendix .
The second parameter is the Duration of the node. The duration can have the following
values:
typedef enum
{
NODE_1_32 = 1,
NODE_1_16 = 2,
NODE_3_32 = 3,
NODE_1_8 = 4,
NODE_3_16 = 6,
NODE_1_4 = 8,
NODE_3_8 = 12,
NODE_1_2 = 16,
NODE_5_8 = 20,
01/20/04 3:00 PM CVM API interface V 0.156 Page 81
Copyright 2003 National Semiconductor BV Company Confidential
Het Zuiderkruis 53
5215 MV ’s-Hertogenbosch PRELIMINARY
The Netherlands
NODE_3_4 = 24,
NODE_7_8 = 28,
NODE_1_1 = 32,
}ENUM8(DspToneNodeType);
For polyphonic melodies, the Melody data should be arranged as a 2 dimensional array. This
means the for a 3 polyphonic melody, data should be arranged like illustrated in the c code
below.
typedef struct
{
uint8 Loop;
uint8 Length;
} ToneEntryHeader;
Loop – indicates how many times the tone patten should loop before stopping
As indicated by the header format, polyphonic tones in tone pattern are not possible.
The ToneData, is build up in much the same way as melodies exept that Tones is specified as
Tone/Time pairs instead of actual nodes. The time part should be specified as x times 10 ms.
The c code below illustrates the structure of the ToneData
Tone and melody data can be placed anywhere in unused eeprom space. Please refer to
eeprom tree file.
Primitive: CVM_PP_AUDIO_START_EE_MELODY_REQ/
CVM_FP_AUDIO_START_EE_MELODY_REQ
Description: This command is used to start a user melody from eeprom. The command is the same as
CVM_TONE_START_MELODY_REQ except that eeprom address is parsed as
argument instead of ringer index
Parameters:
Type Name Description
uint16 wEeAddr;
uint8 bVolIndex;
The following mail type should be used when playing tones from eeprom
Primitive: CVM_PP_AUDIO_START_EE_TONE_REQ/
CVM_FP_AUDIO_START_EE_TONE_REQ
Description: This command is used to start a user tone pattern from eeprom. The command is the same
as CVM_TONE_START_TONE_REQ except that eeprom address is parsed as argument
instead of tone pattern index
Parameters:
Type Name Description
uint16 wEeAddr;
uint8 bVolIndex;
Headset detection
The headset detection must be configured in eeprom to ensure proper functionality, since
depends on the hardware configuration (refer to eeprom document for further details). The
following indication is used to signal a change in headset state. It is then up to the application
to decide if the audio path should be changed.
Primitive: CVM_PP_HEADSET_DETECT_IND
Description: This command is indicates new headset state
Parameters:
Type Name Description
boolean HeadsetPlug Headset plug state:
1: headset detected
0: headset not detected
Please refer to CVM datasheet to se audioroute setup for each audio mode. By default all
filters are loaded with bypass coefficents.
C 0 + 2 C1 z −1 + C 2 z −2
H ( z) =
1 + (−C3 ) z −1 + (−C 4 ) z −2
The figure and the equation above describes the logical block diagram of the Programmable
Filter. Please refer to National AN-D-60 for further details about the programmable filter (
PFILT)
Filter coefficients
Index Name Range Description
0 C0 80.00-7F.FF Coefficient 0
1 C1 80.00-7F.FF Coefficient 1
2 C2 80.00-7F.FF Coefficient 2
3 C3 80.00-7F.FF Coefficient 3
4 C4 80.00-7F.FF Coefficient 4
5 Fin_Att 80.00-7F.FF Input attenuation factor
6 Foutgains - [13:12] - Output gain: 00=0dB, 01=+6dB,
10=+12dB 11=+18dB
[15:14] - Coefficient scaling: 00= X1, 01=X2,
10=X4, 11=X8
The Q15 data format is a 16-bit signed normalized fixed-point number representation.
-20 = -1 = 0x8000
Primitive: CVM_DSP_SET_FILT_COEF_REQ
Description: This command is used to setup new filter coefficient
Parameters:
Type Name Description
uint8 PfiltId; Number of filter to adjust.
legal values (1-4)
uint16 FiltCoef7] Array of filter coefficients, se table above
Primitive: CVM_SET_TIME_REQ
Description: Adjust the time of the realtime clock
Parameters:
Type Name Description
uint8 bYear Year since 2000 (e.i. 2003 = 03, 2099 = 99)
uint8 bMonth Month of the year - [1,12]
uint8 bDay Day of the month - [1,31]
uint8 bHours Hours since midnight - [0, 23]
uint8 bMinutes Minutes after the hour - [0,59]
Primitive: CVM_GET_TIME_REQ
Description: Read request to read out the time of the realtime clock
Parameters: None
Primitive: CVM_SET_TIME_CFM
Description: Return status of time adjustment of the realtime clock
Parameters:
Type Name Description
uint8 bStatus TRUE if time was set successfully
FALSE if setting time failed.
Primitive: CVM_GET_TIME_CFM
Description: Return read out of the time of the realtime clock
Parameters:
Type Name Description
uint8 bYear Year since 2000 (e.i. 2003 = 03, 2099 = 99)
uint8 bMonth Month of the year - [1,12]
uint8 bDay Day of the month - [1,31]
uint8 bHours Hours since midnight - [0, 23]
uint8 bMinutes Minutes after the hour - [0,59]
uint8 bSeconds Seconds after the minute - [0,59]
uint8 bSyncStatus Pp synchronization status:
TRUE: PP realtime clock synchronized
with FP.
FALSE: PP realtime clock not
synchronized with FP.
Primitive: CVM_SET_TIME_REMOTE_CFM
Description: Return status of remote time adjustment of the realtime clock (requires service
connection).
Parameters:
Type Name Description
uint8 bStatus TRUE if time was set successfully
FALSE if setting time failed.
Primitive: CVM_BAT_POWER_OFF_REQ
Description: Requests power off from the MCU
Parameters: none
Primitive: CVM_BAT_CONSUMPTION_REQ
Description: Indicates the current power consumption to CVM
Parameters:
Type Name Description
uint8 bConsumption Current battery consumption in 1mA
steps
Primitive: CVM_BAT_CAPACITY_REQ
Description: Requests battery capacity reading
Parameters: none
Primitive: CVM_BAT_CRADLED_REQ
Description: Returns a CVM_BAT_CRADLED_CFM, which contains the current cradle-state
(i.e. in the cradle or not in the cradle)
Parameters: none
Primitive: CVM_BAT_POWER_ON_REASON_REQ
Description: Returns a CVM_BAT_POWER_ON_REASON_CFM, which contains the power on
reason (i.e. a normal power on, cradle power on, new battery or a software reset).
Parameters: none
Primitive: CVM_BAT_RESET_REQ
Description: This will make the CVM perform a software-reset.
Parameters: none
Primitive: CVM_BAT_CAPACITY_CFM
Description: Confirm mail from the CVM holding the requested battery capacity level
(return mail on the CVM_BAT_CAPACITY_REQ)
Parameters:
Type Name Description
uint8 bCapacity Current capacity of the battery in percent.
0-100%
Primitive: CVM_BAT_CRADLED_CFM
Description: Confirm mail from the CVM holding the requested cradle state.
(return mail on the CVM_BAT_CRADLE_REQ)
Parameters:
Type Name Description
uint8 bStatus Current state of the cradle:
TRUE = OnCradle
FALSE = OffCradle
Primitive: CVM_BAT_CAPACITY_IND
Description: Indication from the CVM holding the current capacity level (automatically sent once
pr. minute)
Parameters:
Type Name Description
uint8 bCapacity Current capacity of the battery in percent.
0-100%
Primitive: CVM_BAT_LOW_IND
Description: Indication from the CVM that the battery is running low
Parameters: none
Primitive: CVM_BAT_EMPTY_IND
Description: Indication from the CVM that the battery is empty. As an answer to this mail the
MCU must send a CVM_BAT_POWER_OFF_REQ ASAP.
(This allows the MCU to perform a controlled power off in case of an empty
battery).
Parameters: none
Primitive: CVM_BAT_CRADLE_IND
Description: Indicates to the MCU that the PP is inserted/removed from the cradle
Parameters:
Type Name Description
uint8 bStatus Current state of the cradle:
TRUE = OnCradle
FALSE = OffCradle
Primitive: CVM_PP_LOCKED_STATUS_REQ
Description: Requests the status if the PP is in service on FP
Primitive: CVM_PP_LOCKED_STATUS_CFM
Description: Returns the status if the PP if in service on FP
Parameters:
Type Name Description
uint8 bLockedStatus 0x00: FALSE
0x01: TRUE
Primitive: CVM_GET_VER_REQ
Description: Requests readout of the software revision
Parameters: none
Primitive: CVM_GET_VER_CFM
Description: Returns the software revision
Parameters:
Type Name Description
uint16 bSwVersion Sw version number of the CVM module
Primitive: CVM_FP_LINE_DETECT_START_REQ
Description: Enables the signal detector from the FP
Parameters:
Type Name Description
uint8 bConnectionEI Connection instance
* see instance description for info on
instance numbering
0x00: SIGNAL_DIAL_TONE
0x01: SIGNAL_BUSY_TONE
0x03: SIGNAL_DTMF
uint16 wSignalOnMin Time in 1ms steps
uint16 wSignalOnMax Time in 1ms steps
uint16 wSignalOffMin Time in 1ms steps
uint16 wSignalOffMax Time in 1ms steps
uint8 bRepetitions if this parameter is 0, the SignalOn/Off
parameters will be read from EEPROM.
Primitive: CVM_FP_LINE_DETECT_STOP_REQ
Description: Disables the signal detector from the FP
Parameters:
Type Name Description
uint8 bConnectionEI Connection instance
* see instance description for info on
instance numbering
Primitive: CVM_PP_LINE_DETECT_START_REQ
Description: Enables the signal detector remotely from the PP
*For the remote functionality to work a connection should be setup first
Parameters:
Type Name Description
uint8 bTaskSignalId Signal-id identifying the detection-
session. If a signal is detected the
CVM_LINE_DETECT_IND packet(s)
will contain this id. Possible Id's are
LI_LSD_ID0..ID5 (value 0..5).
Theoretically this means that 6 detections
can be started simultaneously.
uint8 bSignalToDetect The kind of signal to detect.
0x00: SIGNAL_DIAL_TONE
0x01: SIGNAL_BUSY_TONE
0x03: SIGNAL_DTMF
uint16 wSignalOnMin
uint16 wSignalOnMax
uint16 wSignalOffMin
uint16 wSignalOffMax
uint8 bRepetitions if this parameter is 0, the SignalOn/Off
parameters will be read from EEPROM.
Primitive: CVM_PP_LINE_DETECT_STOP_REQ
Primitive: API_WT_ENTER_REQ
Description: Request from MCU_PP to CVM_PP to enter WT mode.
Parameters:
Type Name Description
uint16 wGroupId Group Id (handsets need to have the same
Group Id in order to establish WT
connections).
uint8 bHandsetNo Own WT handset number (must be
unique for each handset in the same
group).
Primitive: API_WT_ENTER_CFM
Description: Confirmation from CVM_PP to MCU_PP that unit has entered WT mode.
Parameters: None
Primitive: API_WT_EXIT_REQ
Description: Request from MCU_PP to CVM_PP to exit WT mode.
Parameters: None
Primitive: API_WT_ENTER_FP_MODE_REQ
Description: Request from MCU_PP to CVM_PP to goto FP mode. (Establishing party must
always enter FP mode before sending API_WT_SETUP_REQ).
Parameters: None
Primitive: API_WT_ENTER_FP_MODE_CFM
Description: Confirmation from CVM_PP to MCU_PP that unit has changed to FP mode.
Parameters: None
Primitive: API_WT_SETUP_REQ
Description: Request from MCU_PP to CVM_PP to establish WT connection to another party.
Parameters:
Type Name Description
uint8 bHandsetNo WT handset number of receiving party.
Primitive: API_WT_SETUP_IND
Description: Indication from CVM_PP to MCU_PP (receiving party) that another party is trying
to establish a WT connection.
Parameters:
Type Name Description
uint8 bCallerId WT handset number of calling party.
Primitive: API_WT_CONNECT_IND
Description: Indication from CVM_PP to MCU_PP (establishing party) that the receiving party
has accepted the WT call, and that the WT connection is established.
Parameters: None
Primitive: API_WT_CONNECT_CFM
Description: Confirmation from CVM_PP to MCU_PP (receiving party) that a WT connection
has been established.
Parameters: None
Primitive: API_WT_RELEASE_REQ
Description: Request from MCU_PP to CVM_PP to release WT connection.
Parameters: None
CVM Module
PP_MCU
PP
API_PP_KEYPAD_REQ
Dialing digits
(NoOfDigit, Digit[])
CVM Module
FP_MCU
FP
API_FP_SETUP_REQ
(ConEI, PP goes offhook
CallClass=EXT)
API_FP_CONNECT_IND
(ConEI) Connection between FP/PP established
CVM_FP_AUDIO_UNMUTE_REQ
Dialing digits
API_FP_KEYPAD_REQ
(ConEI,
NoOfDigit, Digit[]) Dialing digits
API_FP_KEYPAD_REQ
(ConEI,
NoOfDigit, Digit[])
CVM Module
PP_MCU
PP
API_PP_SETUP_IND
CallClass=External Indicates incoming call
CVM_PP_AUDIO_START_MELODY_REQ Generate ringing melody
API_PP_ALERT_ON_IND
(Signal=External) PSTN ringvoltage is on
Generate ringing melody
CVM_PP_AUDIO_START_MELODY_REQ PSTN ringvoltage is off
API_PP_ALERT_OFF_IND
CVM_PP_AUDIO_STOP_MELODY_REQ
Stop ringing melody
API_PP_ALERT_ON_IND
(Signal=External) PSTN ringvoltage is on
CVM Module
FP_MCU
FP
API_FP_SETUP_IND
(ConEI,
Indicates incoming call
CallClass=EXT)
Generate ringing melody
CVM_PP_AUDIO_START_MELODY_REQ
API_FP_ALERT_ON_IND
(ConEI, Signal=EXT) PSTN ringvoltage is on
Generate ringing melody
CVM_FP_AUDIO_START_MELODY_REQ PSTN ringvoltage is off
API_FP_ALERT_OFF_IND
(ConEI)
CVM_FP_AUDIO_STOP_MELODY_REQ
Stop ringing melody
API_FP_ALERT_ON_IND
(ConEI, Signal=EXT) PSTN ringvoltage is on
API_FP_CONNECT_REQ FP_SpeakerPhone answeres (hooks off)
(ConEI) *Other PP's will get a API_FP_RELEASE_IND
API_FP_ALERT_OFF_IND
(ConEI) PSTN ringvoltage is off
API_FP_CONNECT_CFM
Connection is established
(ConEI)
Open for audio
CVM_FP_AUDIO_OPEN_REQ
External
CVM Module Application
PP Micro
Processor
API_PP_ALERT_ON_IND
(Signal=External, Start ring tone
CallType=Speech, Clip)
API_PP_ALERT_OFF_IND
(Signal=External, Stop ring tone
CallType=Speech, Clip)
API_PP_ALERT_ON_IND
(Signal=External,
Start ring tone
CallType=Speech, Clip)
Mmi_Hook_Off
API_PP_CONNECT_IND
External
CVM Module Application
PP Micro
Processor
API_PP_SETUP_IND
CallClass=External Indicates incoming call
API_PP_ALERT_ON_IND
(Signal=External) PSTN ringvoltage is on
Timeout
API_PP_RELEASE_IND
API_PP_RELEASE_RES
CVM Module
FP_MCU
PP
API_FP_SETUP_IND
(ConEI,
Indicates incoming call
CallClass=External)
API_FP_ALERT_REQ Indicates to FP that alerting is started
(ConEI)
API_FP_ALERT_ON_IND
(ConEI, Signal=External) PSTN ringvoltage is on
CVM_FP_AUDIO_START_MELODY_REQ Generate ringing melody
(ConEI)
Timeout
API_FP_RELEASE_IND
(ConEI)
MMI goes to standby
CVM_FP_AUDIO_STOP_MELODY_REQ
API_FP_RELEASE_RES
(ConEI)
API_FP_SETUP_REQ
FP initiates intercom (ConEI,
CallClass=Internal)
API_FP_SETUP_ACK_IND
Local Conection established
(ConEI)
CVM_FP_AUDIO_START_TONE_REQ,
Generate local dialtone (ConEI,
Dialtone)
API_FP_KEYPAD_REQ
User Selects local PpNo
(ConEI,
NoOfDigit, Digit[]) API_PP_SETUP_IND
CallClass=Internal Indicates incoming call
API_FP_SIGNAL_ON_IND
FP requests ringback tone (ConEI, Ringback)
Open audio
CVM_FP_AUDIO_OPEN_REQ CVM_PP_AUDIO_OPEN_REQ Open for audio
CVM_FP_AUDIO_UNMUTE_REQ
API_PP_SIGNAL_ON_IND
FP requests ringback tone (Ringback)
Open audio
CVM_PP_AUDIO_OPEN_REQ CVM_PP_AUDIO_OPEN_REQ Open for audio
API_PP_CONNECT_CFM
Connection is established
Open for audio
Conversation between CVM_PP_AUDIO_OPEN_REQ
FP_SpeakerPhone and PP
is now established
Fp requests PP to API_PP_SIGNAL_ON_IND
generate dialtone (DialTone)
PP hooks on
API_PP_RELEASE_REQ
FP_SpeakerPhone
API_FP_CONNECT_REQ answeres (hooks off)
API_FP_CONNECT_CFM
Connection is established
Open for audio
CVM_FP_AUDIO_OPEN_REQ
External call
FP_SpeakerPhone<->PSTN
established
API_PP_CONNECT_CFM
Connection is established
Open for audio
Conversation between PP1 CVM_PP_AUDIO_OPEN_REQ
and PP2 is now established
* In this case the ConEI already ude for the audio call should be used for further communication
(ConnectionEI=SW_EI_TYPE_IN_AUDIO, or SW_EI_TYPE_OUT_AUDIO)
The connection scenario for PP<->PP transfer is basically the same at FP<->PP except that no ConEI i
needed.
API_PP_CONNECT_CFM
Connection is established
Open for audio
Conversation between PP1 CVM_PP_AUDIO_OPEN_REQ
and PP2 is now established
API_PP_CONNECT_IND
Connection between FP/PP established
API_PP_SETUP_REQ
PP2 goes offhook
(CallClass=EXT)
API_PP_CONNECT_IND
Connection between FP/PP established
API_PP_SIGNAL_ON_IND API_PP_SIGNAL_ON_IND
(SIGNAL_CONF_ENTER_TONE_ON [0x81]) (SIGNAL_CONF_ENTER_TONE_ON [0x81])
Conference established
Setup is performed as
multikeypad INT_KEY '*' API_PP_BROADCAST_IND
RingPattern=PageAll (0x06) Indicates incoming call
API_PP_BROADCAST_IND
RingPattern=PageAll (0x06) Indicates incoming call
Generate ringing melody
CVM_PP_AUDIO_START_MELODY_REQ
with local ringer cadence
External
CVM Module Application
PP Micro
Processor
API_PP_REJECT_IND
Call is rejected by FP
External
CVM Module Application
PP Micro
Processor
Handset in conversation
PP releases connection
API_PP_RELEASE_REQ
External
CVM Module Application
PP Micro
Processor
For applications not using a lineinterface or applications where the lineinterface is handled
and controled in external hardware outside the CVM module, a “Remote Line Mode” has
been implemented.
In this mode the CVM control of the Lineinterface is disabled.
Instead the mails normally handled by the linetask is automatically is send to the FP_MCU
via the API.
The “Remote Line Mode” can be selected in eeprom FpConfig at adr. 0x03F.
Bit0 : Remote line-client, 1=enable, 0=disable
Bit1 : Remote spph-client, 1=enable, 0=disable
In general when accessing the connections using “Remote Line Mode”, Connection instance
0x00 (SW_EI_TYPE_AUDIO_EXT) is used.
Analog
PP_CVM 1 PP_MCU
Speakerphone
ConEi ≠ 0x00
PP_CVM 2 PP_MCU
PP_CVM 3 PP_MCU
ConEi = 0x00
Analog
PP_CVM 4 PP_MCU
LineInterface
For the CVM base switch to manage the calls correctly, it should still be involved in all calls
on the system.
This means that logically a call from the FP_SpkPhone to the Line will still need to pass
througt the CVM.
Fp_SpkPhone requests setup to the CVM which will then request the Line for a connection.
This way the CVM base switch will be able to keep track of the active connections, manage
callback, callstatus etc... (see msg.seq. examples below.)
FP_MCU FP_MCU
(SpkPhoneTask) FP_API
(LineTask)
API_FP_SETUP_ADVANCED_REQ
simulate incoming call (ConEI=0x70, API_FP_SETUP_IND
CallClass=Ext, ( ConEI = 0x00, Indicates incoming call
CallerDst = LineA (0xF1) ) CallClass=External )
API_FP_CONNECT_REQ
API_FP_CONNECT_IND ( ConEI = 0x00 )
Indicates indicates that
( ConEI=0x70 )
Line has connected
API_FP_CONNECT_CFM
( ConEI = 0x00) FP MCU should offhook
Open to FpSpkPhone
CVM_FP_AUDIO_OPEN_REQ CVM_FP_AUDIO_OPEN_REQ Open to line
CVM_FP_AUDIO_UNMUTE_REQ CVM_FP_AUDIO_UNMUTE_REQ
RF link
API_FP_RELEASE_RES
Call is released API_FP_RELEASE_CFM ( ConEI = 0x00 )
( ConEI = 0x70 )
PP_MCU FP_MCU
PP_CVM FP_CVM
(LineTask)
API_FP_CONNECT_REQ
Indicates indicates that API_PP_CONNECT_IND ( ConEI = 0x00 )
Line has connected
API_FP_CONNECT_CFM
( ConEI = 0x00) FP MCU should offhook
Open to FpSpkPhone
CVM_PP_AUDIO_OPEN_REQ CVM_FP_AUDIO_OPEN_REQ Open to line
CVM_FP_AUDIO_UNMUTE_REQ
CVM_PP_AUDIO_UNMUTE_REQ RF link
API_FP_RELEASE_RES
API_PP_RELEASE_CFM ( ConEI = 0x00 )
Call is released
FP_MCU FP_MCU
FP_API (SpkPhoneTask)
(line task)
API_FP_SETUP_ADVANCED_REQ
simulate incoming call (ConEI=0x00, API_FP_SETUP_IND
CallClass=Ext, ( ConEI = 0x60, Indicates incoming call
CallerDst = LineA (0xF1) ) CallClass=External )
CVM_FP_AUDIO_START_MELODY_REQ Generate ringing melody
Indicates indicates that
alerting has started API_FP_ALERT_REQ Indicates to FP that alerting is started
API_FP_CALL_PROC_IND ( ConEI = 0x60 )
( ConEI=0x00 )
CVM_FP_AUDIO_START_MELODY_REQ
Generate ringing melody
FP_MCU
FP_CVM PP_CVM PP_MCU
(LineTask)
API_FP_SETUP_ADVANCED_REQ
simulate incoming call (ConEI=0x00,
CallClass=Ext, API_PP_SETUP_IND
CallerDst = LineA (0xF1) ) ( CallClass=External ) Indicates incoming call
CVM_PP_AUDIO_START_MELODY_REQ
Generate ringing melody
FP_MCU
PP_MCU PP_CVM FP_CVM (SpkPhoneTask)
API_PP_SIGNAL_ON_IND
FP requests ringback tone (Ringback)
Open audio
CVM_PP_AUDIO_OPEN_REQ CVM_FP_AUDIO_OPEN_REQ Open for audio
FP_MCU
(SpkPhoneTask) PP_CVM PP_CVM PP_MCU
API_FP_SETUP_ADVANCED_REQ
FpSpkPhone initiates
( ConEI = 0x00,
intercom
CallClass=Internal,
CallerDst = OverlapSending (0x00) )
API_FP_KEYPAD_REQ
User Selects local PpNo ('1')
( ConEI = 0x00,
NoOfDigit, '1') API_PP_SETUP_IND
( CallClass=Internal ) Indicates incoming call
API_FP_SIGNAL_ON_IND
FP requests ringback tone (ConEI = 0x00,
Ringback)
API_FP_CONNECT_IND
API_PP_ALERT_OFF_IND
Other PP answeres, connected ( ConEI = 0x00 ) Stop internal ringing
External
CVM Module CVM Module Application
FP PP Micro
Processor
RF link Timeout
PP retries registration without success
Then finally succeded
Timeout
External
CVM Module CVM Module Application
FP PP Micro
Processor
Timeout
RF link Timeout
Timeout
Timeout
Timeout
External
CVM Module Application
PP Micro
Processor
API_PP_DELETE_SUBS_CFM
Deregistration successfull
API_FP_DELETE_SUBS_CFM
Deregistration successfull
External
CVM Module CVM Module Application
FP PP Micro
Processor
Connection
established between
PP and FP
API_PP_REMOTE_
RF link DELETE_SUBS_REQ PP requests deregistration
(PP SubscriptionNo)
API_PP_REMOTE_
DELETE_SUBS_CFM Deregistration successfull
External
CVM Module CVM Module Application
FP PP Micro
Processor
Power on FP
CVM_BAT_CRADLE_IND,
AutoRegistrationenabled timeout 2min
External
CVM Module Application
PP Micro
Processor
External
CVM Module Application
PP Micro
Processor
Timeout
If the service call is initiated from the FP_Speakerphone, SW_EI_TYPE_IN_DATA0 should be used for the first
connection. SW_EI_TYPE_IN_DATA1 for the next parallel connection and so on.
API_PP_CONNECT_IND
Call established
Send application
API_FP_IWU_DATA_REQ
specific IWU data to API_PP_IWU_DATA_IND
(ConEI, Length, Data[]) Receive application
PP (IwuType, Length, Data[])
specific IWU data to FP
RF link
API_FP_IWU_DATA_IND API_PP_IWU_DATA_REQ
(ConEI, Length, Data[]) (IwuType, Length, Data[])
API_FP_IWU_DATA_REQ
(ConEI, Length, Data[]) API_PP_IWU_DATA_IND
(IwuType, Length, Data[])
API_PP_RELEASE_CFM
No connection
established
Userdefined data
broadcasted from FP to API_FP_UNITDATA_REQ
all PP's (Length, Data[]) RF link API_FP_UNITDATA_IND Userdefined data
(Length, Data[]) broadcasted from FP
received
In order to utilize the bus between CVM and MCU fully, more than one
*_READY_IND/REQ may be sent. E.g. if MCU initially sends 3
API_FP_RECEIVE_READY_REQ and then 1 each time API_FP_DATA_RECEIVE_IND
(data packet) is received, then CVM is allowed to have 3 outstanding data packets all the
time, thus ensuring that the bus can be utilized fully if needed. The maximum number of
*_READY_IND/REQ that may be outstanding at any time is 5.
The reception of a *_READY_IND does not indicate that the peer has received the previously
sent data; only that buffer is available to send more data.
_SEND_REQ,
API_FP_DATA ata[]
, wLength, bD
bConnectionEI
API_FP_DATA FP MCU sends data to PP MCU
, wLength, _SEND_READ
_RECEIVE_IND Y_IND,
API_PP_DATA bData[] bConnection
EI
PP MCU receives data
API_PP_DATA
_RECEIVE_RE
ADY_IND
External
CVM Module CVM Module Application
FP PP Micro
Processor
CVM_PP_CONNECT_IND
Connection is established
RF link
CVM_REMOTE_EEP_READ_CFM
(Length, Data) Data received from FP eeprom read
External
Application CVM Module
Micro FP
Processor
Invoke subscription
from FP_MCU CVM_FP_INVOKE_ACCESS_RIGHTS
CVM_GET_TIME_REQ
CVM_GET_TIME_CFM
(bYear, bMonth, bDay, bHours, bMinutes)
CVM_SET_TIME_REQ
(bYear, bMonth, bDay, bHours, bMinutes)
CVM_SET_TIME_CFM
(bStatus)
CVM_SET_TIME_REMOTE_REQ
RF link (bYear, bMonth, bDay, bHours, bMinutes)
CVM_SET_TIME_REMOTE_CFM CVM_SET_TIME_REMOTE_CFM
(bStatus) (bStatus)
External
CVM Module Application
PP Micro
Processor
API_WT_ENTER_REQ
(WGroupId, bHandsetNo)
API_WT_ENTER_CFM
External
CVM Module Application
PP Micro
Processor
API_WT_EXIT_REQ
API_WT_EXIT_CFM
External
CVM Module Application
PP Micro
Processor
Goto FP mode to be
API_WT_ENTER_FP_MODE_REQ able to establish call.
API_WT_ENTER_FP_MODE_CFM
Receiving handset
accepts the call. API_WT_CONNECT_IND
CVM_PP_AUDIO_OPEN_REQ
External
CVM Module Application
PP Micro
Processor
API_WT_SETUP_IND
(bCallerId)
API_WT_CONNECT_CFM
CVM_PP_AUDIO_OPEN_REQ
External
CVM Module Application
PP Micro
Processor
CVM_PP_AUDIO_CLOSE_REQ
API_WT_RELEASE_REQ
API_WT_RELEASE_CFM
External
CVM Module Application
PP Micro
Processor
API_WT_RELEASE_IND
CVM_PP_AUDIO_CLOSE_REQ
6.1 Introduction
The purpose of BUSMAIL is to provide an interface for exchanging data over the serial port
(Standard UART) or any other physical link. BUSMAIL is a simple protocol providing a
frame format for exchange of acknowledged data packets. BUSMAIL provides a simple
implementation of the lower layers in the OSI 7-layer model. See Figure 1below.
MCU CVM
BUSMAIL uses an HDLC look a like scheme. This way it makes up a safe carrier of mails
between the Application and the CVM tasks. BUSMAIL will filter out frames having a bad
checksum. BUSMAIL will ensure that lost frames, e.g. due to checksum errors, will be
retransmitted and ensure all frames are delivered to the receiver in the order they were sent.
Logically the MCU Application and the CVM Task exchange mails which can not be lost.
The two Busmail blocks exchange protocol frames, either information frames or control
frames.
In practice a mail from e.g. the MCU application is handed over to the MCU busmail. This
block will encapsulate it into an information frame and transmit it on the SPI/UART. When
received by CVM Busmail, it is verified with respect to checksum and to sequence number
and if accepted, the mail is unpacked and given to the CVM task. If the verification fails the
two BUSMAIL blocks have a mechanism to ensure it is retransmitted until it doesn’t fail the
verification anymore. This way from the Application/CVM tasks point of view it is a secure
transmission.
6.2.2 Length
The length is a 16-bit number transmitted most significant byte first. The length is equal to the
number of bytes in the mail + 1 (the header) byte.
I/C PF
Bit: 7 6 5 4 3 2 1 0
Information/Control Frame
Bit: 7 6 5 4 3 2 1 0 Bit: 7 6 5 4 3 2 1 0
Bit: 7 6 5 4 3 2 1 0 Bit: 7 6 5 4 3 2 1 0
• If Bit 7 is ’1’ the frame is a control frame. Interpretation of the other bits
depends on bit 6. (S/U).
Bit 3: PF
PollFinal, when set to ‘1’, it signals to the other party that a status is expected.
The unnumbered control frame is used to initialize and reset the transmission between the two units. This
is the frame type that is used to send the SABM. After a SABM both Rx, Tx packet counters are set to 0.
The Supervisory control frame is used to acknowledge a received packagde from the other
part.
Each information frame package holds the Rx frame seq number. This is to indicate to the
sender which package it expects next.
If the Rx seq numbers does not match the expected counts on the sending side, a
retransmission should be started.
b) Information frame
The information frame is used to send data package (API commands, primitives with
parameters) between the two parties.
If the receiver of a data package wants to send data back to the other, party right away,
it doesent need to acknowledge the received data by the supervisory control frame.
In stead it can send its data in the Information frame and it will then also acknowledge the
received packagde.
Each informaqtion frame package holds the Rx/Tx frame seq numbers indication which
package has been send and which package the sender expects to receive next.
If the Rx/Tx seq numbers does not match the expected counts on the receiving side, a
retransmission will be requested.
Program Id Task Id. (LS Byte) Primitive (MS Byte) Mail parametres
6.2.4.1 Program Id
The programID is an identifier used for debugging under development of the CVM itself.
For MCU developers communicating with the CVM on the API interface, the ProgramID
should always be set to 0x00.
See section 1.7 for more details.
6.2.4.2 Task Id
The TaskID specifies which software task inside the CVM module should receive the API
mail.
For MCU developers communicating with the CVM, the TaskID should be set to:
- TaskID= 0x0F (USERTASK): Normal MCU<->CVM API command interface
- TaskID= 0x00 (TBHANDLE): Production interface command interface
! other values of the TaskID should not be used as they could send mails to undesired tasks of
the CVM not designed for direct API communication.
See section 1.7 for more details.
6.2.4.3 Primitve
The primitive is the actual API command to send/receive commands to/from the CVM.
6.2.5 Checksum
The checksum in the BUSMAIL frames is a simple 8-bit addition of the header field and the
mail field bytes.
01/20/04 3:00 PM CVM API interface V 0.156 Page 137
Copyright 2003 National Semiconductor BV Company Confidential
Het Zuiderkruis 53
5215 MV ’s-Hertogenbosch PRELIMINARY
The Netherlands
6.3 Synchronization Protocol
The BUSMAIL protocol makes use of a retransmission protocol similar to HDLC to ensure
safe data transmission. This incorporates acknowledge of sent packages and retransmission in
the event of errors. The protocol can have a maximum of 7 outstanding packages, but it is free
to use less outstanding frames.
When a frame is sent the protocol gives it a consecutive Tx-sequence number in its header i.e.
0,1,2,3,4…wrapping to zero after 7. Each frame is stored locally by the sender, until a frame
received indicates (by the RxSeq field) that peer has received the frame properly.
An acknowledge-frame can be either an information frame or a supervisory frame.
It is the responsibility of a sender of packages to ensure the other party is returning
acknowledges. This is done by means of the PollFinal bit. If this bit is set the receiver must
always return something. In order to ‘catch’ loss of packages having PollFinal set, the sender
must start a Poll-timer each time a frame with PollFinal set is sent. If the timer expires all
unacknowledged packages must be retransmitted.
1
In current implementation the duration of the retransmit timer is 1 second
2
In current implementation CVM will never send a Supervisory Reject.
3
In current implementation CVM doesn’t react upon this frame.
01/20/04 3:00 PM CVM API interface V 0.156 Page 138
Copyright 2003 National Semiconductor BV Company Confidential
Het Zuiderkruis 53
5215 MV ’s-Hertogenbosch PRELIMINARY
The Netherlands
13. The mail part of received info frames with TxSeq not as expected must be discarded.
14. In order to synchronize sequence expectations it is possible at any time to send an
unnumbered control frame ”SABM” with PollFinal set. A party receiving such frame
must immediately reset both TxSeq and RxSeq to zero and respond with a SABM frame,
with PollFinal cleared. 4
A dashed triangle denotes a started timer with a duration symbolized with the hight of the
triangle
A solid filled triangle denotes the time a timer actually runs. If the dashed triangle is entirely
covered the timer has expired.
4
CVM will issue this frame once up on reset in order to be synchronized. It will not send other packets nor will
it accept any other packets until it has received a SABM from MCU
01/20/04 3:00 PM CVM API interface V 0.156 Page 139
Copyright 2003 National Semiconductor BV Company Confidential
Het Zuiderkruis 53
5215 MV ’s-Hertogenbosch PRELIMINARY
The Netherlands
UART/SPI
interface
SABM( PF)
Mail App0 I (4,0,PF), Mail App0 Mail CVM0 Timer
Retransmission
due to timeout
I (5,3,noPF), Mail CVM6
Mail CVM7 I (6,3,PF), Mail CVM7
RR (7,noPF) Timer
Retransmission
due to timeout
I (7,3,noPF), Mail CVM8
I (0,3,PF), Mail CVM9
RR (1,noPF) Timer
Timer RR (3,noPF)
Below an example of the actual data transmitted and received from by PP during startup.
SABM (PF)
SABM (no PF)
Header
Checksum
Length
CVM_BAT_CRADLE_IND (0x2F26)
CVM_BAT_CAPACITY_IND (0x2F3C)
Param eter
Header
Mail Primitive
Checksum
Length
Mail ProgramID
Mail TaskID
Header
Checksum
Length
CVM_PP_AUDIO_START_TONE_REQ (0x2F20)
Mail TaskID
FrameChar
Header
Mail Primitive
Checksum
Length
Header
Checksum
Length
Below an example of the actual data transmitted and received from by PP during startup.
SABM (PF)
SABM (no PF)
Header
Checksum
Length
CVM_BUS_SELECT_REQ (0x2F2E)
Param eter
Mail TaskID
FrameChar
Header
Mail Primitive
Checksum
Length
Header
Checksum
Length
The production test bus interface is implemented in the CVM module to give access to read,
write and access different testmodes under production and test.
The commands are send on the same serial bus as the API commands, but in a slightly
different format and to another receivertask (0x02 EEPROMTASK).
To send in production test mails the delivery includes an executable pc file (sendmail.exe) and
some batchfiles calling sendmail with the right parameters.
Sendmail is also available in sourcecode for porting to different systems.
7.1 Sending production test commands using the API test protocol:
If not using the sendmail protocol to send production test commands to the CVM module, it is
also possible to use the API protocol to do so.
It is done by sending the test command to the CVM in the same way as a normal API
command, except that the receiver task should be the TB_HANDLE_TASK (0x00) in stead of
the USERTASK (0x0F)
Example: tonetest.bat
*to see the individual command bytes to send, please see below or in the header of the
individual production test batch file.
Primitive: Bandgap.bat
Description: Controls the bandgap register. If a parameter is given it is
written to the register and to the eeprom and the register contents is
output to the screen. In case no parameter is given
the value of the register is output to the screen.
Command line: Bandgap.bat <value>
Parameter values: Value : Bit 0..3 value of BANDGAP_REG
Return format: Value
Mail to target Task: 0x02 : EEPROMTASK
Primitive: 0x5D : TEST_CMD_req
Function: 0x3F : TC_SET_BATTERY_BANDGAP
Parm[0]: 0x00/0x01 : Read/Write
Parm[1]: xx : Bytes returnes/Value
Primitive: Default.bat
Description: (soft) default activates programming of default values into EEPROM except adjustment
values
Command line: default.bat
Parameter values: none
Return format: none
Mail to target Task: 0x02 : EEPROMTASK
Primitive: 0x3A : EE_WRITE_DEFAULT_req
Parm[0]: 0x00 : Keep adjustment parameters
Primitive: Lockstat.bat
Description: Reads if the pp is in service on the fp
Command line: lockstat.bat
Parameter values: none
Return format: 1 byte : 0=unlocked, 1=locked
Mail to target Task: 0x02: EEPROMTASK
Primitive: 0x5D: TEST_CMD_req
Parm[0]: 0x94: TC_LOCKED_STATE
Parm[1]: 0x01: Dummy
Parm[2]: 0x02: Number of bytes returned
Primitive: Setfreq.bat
Description: Adjusts the frequency. Updates both RAM and EEPROM. If no
parameter is specified, the EEPROM frequency value is read
Usage :
Set freq. to min. and max. (SETFREQ 00 and SETFREQ FE)
Then use SETFREQ.BAT for tuning of nominal frequency
Note:
Argument value FF is NOT allowed
Command line: Setfreq.bat <Frequency>
Parameter values: Frequency (range 0x00-0xFE)
Return format: Frequency
Mail to target if called with parameters:
Task: 0x02 : EEPROMTASK
Primitive: 0x5d : TEST_CMD_req
Parm[0] : 0x3A : TC_SET_CLOCK_FREQUENCY
Parm[1] : Value.
Primitive: Testmode.bat
Description: Puts the handset into internal test mode.
Command line: testModebat <Function>
Parameter values: Function:
0 = leave test mode
1 = enter test mode, lock to RFPI=00 00 00 00 10
2 = enter test mode, lock to RFPI=00 00 00 00 20
..
9 = enter test mode, lock to RFPI=00 00 00 00 90
Return format: none
Mail to target Task: 0x00 : HSCSFTASK
Primitive: 0x5d : TEST_CMD_req
Parm[0] : 0x01 : TESTCMD_ENTER_TESTMODE
Parm[1] : Function
Primitive: Readid.bat
Description: Reads the RFPI/IPEI of the FP/PP from EE-Prom.
The CVM automatically differs between FP/PP mode by looking at the Eeprom parameter
Startup_mode (and 0x0F3).
Command line: readid.bat
Parameter values: none
Return format: RFPI: (5 bytes separated by spaces)
IPEI: (5 bytes separated by spaces)
*depending on Startupmode (FP or PP)
Mail to target Task: 0x02: EEPROMTASK
Primitive: 0x5D: TEST_CMD_req
Parm[0]: 0x1C: TC_READ_ID
Parm[1]: 0x01: Dummy
Parm[2]: 0x05: Number of bytes returned
Primitive: Wree.bat
Description: Reads/writes a single byte in the eeprom
Command line: Wree.bat 01 23 (reads eeprom adr 123(hex)
wree.bat 01 23 45 (writes 45(hex) to eeprom adr 123(hex)
Parameter values: Read: address
Write: address, value
Return format: Displays eeprom page on display
Mail to target //
Primitive: read.bat
Description: Reads and displays one page of the eeprom
*read.bat uses the sub-batchfile readpage.bat
Command line: Read.bat <page>
Parameter values: Page in eeprom to read
(0 = read adr 0x000 to 0x0ff)
(1 = read adr 0x100 to 0x1ff)
…
Return format: Read: eeprom value
Write: none
Mail to target //
Primitive: readpage.bat
Description: *subbatchfile for read.bat
Besides the 12-tone scale listed above, a number of standard frequencies are available in the
CVM. Frequencies in the range 200 Hz to 3400 Hz can be selected with 100 Hz intervals.
The index numbers of the standard frequencies starts from 46 (200 Hz) and ends with 78
(3400 Hz).
National Semiconductor B.V reserves the right to make changes without notice to any products herein to improve
reliability, function or design. National does not assume any liability arising out of the application or use of any
product or circuit described herein; neither does it convey any license under its patent rights, nor the right of
others.
NATIONAL’S PRODUCTS ARE NOT AUTHORIZED FOR USE AS CIRTICAL COMPONENTS IN LIFE
SUPPORT DEVICES OR SYSTEMS WITHOUT THE EXPRESS WRITTEN APPROVAL OF THE PRESIDENT
AND GENERAL COUNSIL OF NATIONAL SEMICONDUCTOR CORPORATION. As used herein:
National does not assume any responsibility for use of any circuit described, no circuit patent licenses are implied,
and National reserves the right, at any time without notice, to change said circuitry or specifications.