Lely core libraries 2.3.4
nmt_srv.c File Reference

This file is part of the CANopen library; it contains the implementation of the NMT service manager functions. More...

#include "co.h"
#include <lely/util/diag.h>
#include <lely/co/csdo.h>
#include <lely/co/dev.h>
#include <lely/co/emcy.h>
#include <lely/co/lss.h>
#include <lely/co/rpdo.h>
#include <lely/co/ssdo.h>
#include <lely/co/sync.h>
#include <lely/co/time.h>
#include <lely/co/tpdo.h>
#include "nmt_srv.h"
#include <assert.h>
#include <stdlib.h>
Include dependency graph for nmt_srv.c:

Go to the source code of this file.

Functions

static void co_nmt_srv_init_pdo (struct co_nmt_srv *srv, can_net_t *net, co_dev_t *dev)
 Initializes all Receive/Transmit-PDO services. More...
 
static void co_nmt_srv_fini_pdo (struct co_nmt_srv *srv)
 Finalizes all Receive/Transmit-PDO services. More...
 
static void co_nmt_srv_rpdo_err (co_rpdo_t *pdo, co_unsigned16_t eec, co_unsigned8_t er, void *data)
 Invokes co_nmt_err() to handle Receive-PDO errors. More...
 
static void co_nmt_srv_init_sdo (struct co_nmt_srv *srv, can_net_t *net, co_dev_t *dev)
 Initializes all Server/Client-SDO services. More...
 
static void co_nmt_srv_fini_sdo (struct co_nmt_srv *srv)
 Finalizes all Server/Client-SDO services. More...
 
static void co_nmt_srv_init_sync (struct co_nmt_srv *srv, can_net_t *net, co_dev_t *dev)
 Initializes the SYNC producer/consumer service. More...
 
static void co_nmt_srv_fini_sync (struct co_nmt_srv *srv)
 Finalizes the SYNC producer/consumer service. More...
 
static void co_nmt_srv_sync_ind (co_sync_t *sync, co_unsigned8_t cnt, void *data)
 Invokes co_nmt_sync() to handle SYNC objects. More...
 
static void co_nmt_srv_sync_err (co_sync_t *sync, co_unsigned16_t eec, co_unsigned8_t er, void *data)
 Invokes co_nmt_err() to handle SYNC errors. More...
 
static void co_nmt_srv_init_time (struct co_nmt_srv *srv, can_net_t *net, co_dev_t *dev)
 Initializes the TIME producer/consumer service. More...
 
static void co_nmt_srv_fini_time (struct co_nmt_srv *srv)
 Finalizes the TIME producer/consumer service. More...
 
static void co_nmt_srv_init_emcy (struct co_nmt_srv *srv, can_net_t *net, co_dev_t *dev)
 Initializes the EMCY producer/consumer service. More...
 
static void co_nmt_srv_fini_emcy (struct co_nmt_srv *srv)
 Finalizes the EMCY producer/consumer service. More...
 
static void co_nmt_srv_init_lss (struct co_nmt_srv *srv, co_nmt_t *nmt)
 Initializes the LSS master/slave service. More...
 
static void co_nmt_srv_fini_lss (struct co_nmt_srv *srv)
 Finalizes the EMCY master/slave service. More...
 
void co_nmt_srv_init (struct co_nmt_srv *srv, co_nmt_t *nmt)
 Initializes a CANopen NMT service manager. More...
 
void co_nmt_srv_fini (struct co_nmt_srv *srv)
 Finalizes a CANopen NMT service manager. More...
 
void co_nmt_srv_set (struct co_nmt_srv *srv, co_nmt_t *nmt, int set)
 Enables/disables the specified CANopen services. More...
 

Detailed Description

This file is part of the CANopen library; it contains the implementation of the NMT service manager functions.

See also
src/nmt_srv.h
Author
J. S. Seldenthuis jseld.nosp@m.enth.nosp@m.uis@l.nosp@m.ely..nosp@m.com

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Definition in file nmt_srv.c.

Function Documentation

◆ co_nmt_srv_init_pdo()

static void co_nmt_srv_init_pdo ( struct co_nmt_srv srv,
can_net_t net,
co_dev_t dev 
)
static

Initializes all Receive/Transmit-PDO services.

See also
co_nmt_srv_fini_pdo()

Definition at line 218 of file nmt_srv.c.

◆ co_nmt_srv_fini_pdo()

static void co_nmt_srv_fini_pdo ( struct co_nmt_srv srv)
static

Finalizes all Receive/Transmit-PDO services.

See also
co_nmt_srv_init_pdo()

Definition at line 295 of file nmt_srv.c.

◆ co_nmt_srv_rpdo_err()

static void co_nmt_srv_rpdo_err ( co_rpdo_t pdo,
co_unsigned16_t  eec,
co_unsigned8_t  er,
void *  data 
)
static

Invokes co_nmt_err() to handle Receive-PDO errors.

See also
co_rpdo_err_t

Definition at line 323 of file nmt_srv.c.

◆ co_nmt_srv_init_sdo()

static void co_nmt_srv_init_sdo ( struct co_nmt_srv srv,
can_net_t net,
co_dev_t dev 
)
static

Initializes all Server/Client-SDO services.

See also
co_nmt_srv_fini_sdo()

Definition at line 337 of file nmt_srv.c.

◆ co_nmt_srv_fini_sdo()

static void co_nmt_srv_fini_sdo ( struct co_nmt_srv srv)
static

Finalizes all Server/Client-SDO services.

See also
co_nmt_srv_init_sdo()

Definition at line 410 of file nmt_srv.c.

◆ co_nmt_srv_init_sync()

static void co_nmt_srv_init_sync ( struct co_nmt_srv srv,
can_net_t net,
co_dev_t dev 
)
static

Initializes the SYNC producer/consumer service.

See also
co_nmt_srv_fini_sync()

Definition at line 437 of file nmt_srv.c.

◆ co_nmt_srv_fini_sync()

static void co_nmt_srv_fini_sync ( struct co_nmt_srv srv)
static

Finalizes the SYNC producer/consumer service.

See also
co_nmt_srv_init_sync()

Definition at line 460 of file nmt_srv.c.

◆ co_nmt_srv_sync_ind()

static void co_nmt_srv_sync_ind ( co_sync_t sync,
co_unsigned8_t  cnt,
void *  data 
)
static

Invokes co_nmt_sync() to handle SYNC objects.

See also
co_sync_ind_t

Definition at line 472 of file nmt_srv.c.

◆ co_nmt_srv_sync_err()

static void co_nmt_srv_sync_err ( co_sync_t sync,
co_unsigned16_t  eec,
co_unsigned8_t  er,
void *  data 
)
static

Invokes co_nmt_err() to handle SYNC errors.

See also
co_sync_err_t

Definition at line 482 of file nmt_srv.c.

◆ co_nmt_srv_init_time()

static void co_nmt_srv_init_time ( struct co_nmt_srv srv,
can_net_t net,
co_dev_t dev 
)
static

Initializes the TIME producer/consumer service.

See also
co_nmt_srv_fini_time()

Definition at line 497 of file nmt_srv.c.

◆ co_nmt_srv_fini_time()

static void co_nmt_srv_fini_time ( struct co_nmt_srv srv)
static

Finalizes the TIME producer/consumer service.

See also
co_nmt_srv_init_time()

Definition at line 516 of file nmt_srv.c.

◆ co_nmt_srv_init_emcy()

static void co_nmt_srv_init_emcy ( struct co_nmt_srv srv,
can_net_t net,
co_dev_t dev 
)
static

Initializes the EMCY producer/consumer service.

See also
co_nmt_srv_fini_emcy()

Definition at line 532 of file nmt_srv.c.

◆ co_nmt_srv_fini_emcy()

static void co_nmt_srv_fini_emcy ( struct co_nmt_srv srv)
static

Finalizes the EMCY producer/consumer service.

See also
co_nmt_srv_init_emcy()

Definition at line 551 of file nmt_srv.c.

◆ co_nmt_srv_init_lss()

static void co_nmt_srv_init_lss ( struct co_nmt_srv srv,
co_nmt_t nmt 
)
static

Initializes the LSS master/slave service.

See also
co_nmt_srv_fini_lss()

Definition at line 567 of file nmt_srv.c.

◆ co_nmt_srv_fini_lss()

static void co_nmt_srv_fini_lss ( struct co_nmt_srv srv)
static

Finalizes the EMCY master/slave service.

See also
co_nmt_srv_init_lss()

Definition at line 585 of file nmt_srv.c.

◆ co_nmt_srv_init()

void co_nmt_srv_init ( struct co_nmt_srv srv,
co_nmt_t nmt 
)

Initializes a CANopen NMT service manager.

See also
co_nmt_srv_fini()

Definition at line 111 of file nmt_srv.c.

◆ co_nmt_srv_fini()

void co_nmt_srv_fini ( struct co_nmt_srv srv)

Finalizes a CANopen NMT service manager.

See also
co_nmt_srv_init()

Definition at line 152 of file nmt_srv.c.

◆ co_nmt_srv_set()

void co_nmt_srv_set ( struct co_nmt_srv srv,
co_nmt_t nmt,
int  set 
)

Enables/disables the specified CANopen services.

Parameters
srva pointer to a CANopen NMT service manager.
nmta pointer to an NMT master/slave service.
setthe services to be enabled (any combination of CO_NMT_SRV_PDO, CO_NMT_SRV_SDO, CO_NMT_SRV_SYNC, CO_NMT_SRV_TIME and CO_NMT_SRV_EMCY). Services not part of set will be disabled.

Definition at line 160 of file nmt_srv.c.