1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
//! # From OCPP Specification
//! 4.2. Boot Notification
//! After start-up, a Charge Point SHALL send a request to the Central System with information
//! about its configuration (e.g. version, vendor, etc.). The Central System SHALL respond to
//! indicate whether it will accept the Charge Point.
//!
//! The Charge Point SHALL send a BootNotification.req PDU each time it boots or reboots. Between
//! the physical power-on/reboot and the successful completion of a BootNotification, where Central
//! System returns Accepted or Pending, the Charge Point SHALL NOT send any other request to the
//! Central System. This includes cached messages that are still present in the Charge Point from
//! before.
//!
//! When the Central System responds with a BootNotification.conf with a status Accepted, the
//! Charge Point will adjust the heartbeat interval in accordance with the interval from the
//! response PDU and it is RECOMMENDED to synchronize its internal clock with the supplied Central
//! System’s current time. If the Central System returns something other than Accepted, the value
//! of the interval field indicates the minimum wait time before sending a next BootNotification
//! request. If that interval value is zero, the Charge Point chooses a waiting interval on its
//! own, in a way that avoids flooding the Central System with requests. A Charge Point SHOULD NOT
//! send a BootNotification.req earlier, unless requested to do so with a TriggerMessage.req.
//! If the Central System returns the status Rejected, the Charge Point SHALL NOT send any OCPP
//! message to the Central System until the aforementioned retry interval has expired. During this
//! interval the Charge Point may no longer be reachable from the Central System. It MAY for
//! instance close its communication channel or shut down its communication hardware. Also the
//! Central System MAY close the communication channel, for instance to free up system resources.
//! While Rejected, the Charge Point SHALL NOT respond to any Central System initiated message. the
//! Central System SHOULD NOT initiate any.
//!
//! The Central System MAY also return a Pending registration status to indicate that it wants to
//! retrieve or set certain information on the Charge Point before the Central System will accept
//! the Charge Point. If the Central System returns the Pending status, the communication channel
//! SHOULD NOT be closed by either the Charge Point or the Central System. The Central System MAY
//! send request messages to retrieve information from the Charge Point or change its configuration.
//! The Charge Point SHOULD respond to these messages. The Charge Point SHALL NOT send request
//! messages to the Central System unless it has been instructed by the Central System to do so
//! with a TriggerMessage.req request.
//!
//! While in pending state, the following Central System initiated messages are not allowed:
//! RemoteStartTransaction.req and RemoteStopTransaction.req
use crateRegistrationStatus;
use ;
use Validate;