Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Enumerations
caif_layer.h File Reference
#include <linux/list.h>

Go to the source code of this file.

Data Structures

struct  cflayer
 
struct  dev_info
 
struct  caif_payload_info
 

Macros

#define CAIF_LAYER_NAME_SZ   16
 
#define caif_assert(assert)
 
: Name of the layer.

struct cflayer - CAIF Stack layer. Defines the framework for the CAIF Core Stack. : Pointer up to the layer above. : Pointer down to the layer below. : List node used when layer participate in a list. : Packet receive function. : Packet transmit funciton. : Used for control signalling upwards in the stack. : Used for control signaling downwards in the stack. : The identity of this layer

This structure defines the layered structure in CAIF.

It defines CAIF layering structure, used by all CAIF Layers and the layers interfacing CAIF.

In order to integrate with CAIF an adaptation layer on top of the CAIF stack and PHY layer below the CAIF stack must be implemented. These layer must follow the design principles below.

Principles for layering of protocol layers:

  • All layers must use this structure. If embedding it, then place this structure first in the layer specific structure.
  • Each layer should not depend on any others layer's private data.
  • In order to send data upwards do layer->up->receive(layer->up, packet);
  • In order to send data downwards do layer->dn->transmit(layer->dn, info, packet);
#define layer_set_up(layr, above)   ((layr)->up = (struct cflayer *)(above))
 
#define layer_set_dn(layr, below)   ((layr)->dn = (struct cflayer *)(below))
 

Enumerations

enum  caif_ctrlcmd {
  CAIF_CTRLCMD_FLOW_OFF_IND, CAIF_CTRLCMD_FLOW_ON_IND, CAIF_CTRLCMD_REMOTE_SHUTDOWN_IND, CAIF_CTRLCMD_INIT_RSP,
  CAIF_CTRLCMD_DEINIT_RSP, CAIF_CTRLCMD_INIT_FAIL_RSP, _CAIF_CTRLCMD_PHYIF_FLOW_OFF_IND, _CAIF_CTRLCMD_PHYIF_FLOW_ON_IND,
  _CAIF_CTRLCMD_PHYIF_DOWN_IND
}
 
enum  caif_modemcmd { CAIF_MODEMCMD_FLOW_ON_REQ = 0, CAIF_MODEMCMD_FLOW_OFF_REQ = 1, _CAIF_MODEMCMD_PHYIF_USEFULL = 3, _CAIF_MODEMCMD_PHYIF_USELESS = 4 }
 
enum  caif_direction { CAIF_DIR_IN = 0, CAIF_DIR_OUT = 1 }
 

Macro Definition Documentation

#define caif_assert (   assert)
Value:
do { \
if (!(assert)) { \
pr_err("caif:Assert detected:'%s'\n", #assert); \
WARN_ON(!(assert)); \
} \
} while (0)

caif_assert() - Assert function for CAIF. : expression to evaluate.

This function will print a error message and a do WARN_ON if the assertion failes. Normally this will do a stack up at the current location.

Definition at line 27 of file caif_layer.h.

#define CAIF_LAYER_NAME_SZ   16

Definition at line 18 of file caif_layer.h.

#define layer_set_dn (   layr,
  below 
)    ((layr)->dn = (struct cflayer *)(below))

layer_set_dn() - Set the down pointer for a specified layer. : Layer where down pointer shall be set. : Layer below.

Definition at line 247 of file caif_layer.h.

#define layer_set_up (   layr,
  above 
)    ((layr)->up = (struct cflayer *)(above))

layer_set_up() - Set the up pointer for a specified layer. : Layer where up pointer shall be set. : Layer above.

Definition at line 240 of file caif_layer.h.

Enumeration Type Documentation

enum caif_ctrlcmd - CAIF Stack Control Signaling sent in layer.ctrlcmd().

: Flow Control is OFF, transmit function should stop sending data

: Flow Control is ON, transmit function can start sending data

: Remote end modem has decided to close down channel

: Called initially when the layer below has finished initialization

: Called when de-initialization is complete

: Called if initialization fails

: CAIF Link layer temporarily cannot send more packets. : Called if CAIF Link layer is able to send packets again. : Called if CAIF Link layer is going down.

These commands are sent upwards in the CAIF stack to the CAIF Client. They are used for signaling originating from the modem or CAIF Link Layer. These are either responses (*_RSP) or events (*_IND).

Enumerator:
CAIF_CTRLCMD_FLOW_OFF_IND 
CAIF_CTRLCMD_FLOW_ON_IND 
CAIF_CTRLCMD_REMOTE_SHUTDOWN_IND 
CAIF_CTRLCMD_INIT_RSP 
CAIF_CTRLCMD_DEINIT_RSP 
CAIF_CTRLCMD_INIT_FAIL_RSP 
_CAIF_CTRLCMD_PHYIF_FLOW_OFF_IND 
_CAIF_CTRLCMD_PHYIF_FLOW_ON_IND 
_CAIF_CTRLCMD_PHYIF_DOWN_IND 

Definition at line 66 of file caif_layer.h.

enum caif_direction - CAIF Packet Direction. Indicate if a packet is to be sent out or to be received in. : Incoming packet received. : Outgoing packet to be transmitted.

Enumerator:
CAIF_DIR_IN 
CAIF_DIR_OUT 

Definition at line 109 of file caif_layer.h.

enum caif_modemcmd - Modem Control Signaling, sent from CAIF Client to the CAIF Link Layer or modem.

: Flow Control is ON, transmit function can start sending data.

: Flow Control is OFF, transmit function should stop sending data.

: Notify physical layer that it is in use

: Notify physical layer that it is no longer in use.

These are requests sent 'downwards' in the stack. Flow ON, OFF can be indicated to the modem.

Enumerator:
CAIF_MODEMCMD_FLOW_ON_REQ 
CAIF_MODEMCMD_FLOW_OFF_REQ 
_CAIF_MODEMCMD_PHYIF_USEFULL 
_CAIF_MODEMCMD_PHYIF_USELESS 

Definition at line 96 of file caif_layer.h.