Skip to main content

PrepareWrite

Struct PrepareWrite 

Source
pub struct PrepareWrite {
    pub data_type: DataType,
    pub index: u8,
    pub size: usize,
}
Expand description

This command writes / deletes data (certificates, etc.) to / from the non-volatile (NV) memory. Data stored in nonvolatile memory is not affected by device reboots and software upgrades.

Attention: A factory reset (see Device Reset to Factory State: AT+SQNSFACTORYRESET (on page 484)) deletes all data written in the NV memory.

Usage and syntax changes according to the type of data to store.

§Certificates

The form with “certificate” writes a single certificate, or several concatenated certificates, in the non volatile memory. Once the operation is completed, public certificates are immediately available for all client secured IP connection (Device Initiated Upgrade: AT+SQNSUPGRADE (on page 74), Secured socket). For secured sockets in server mode, the certificate must be used to assign private certificate to the secure server.

An must be provided for the system to identify the certificate (or bundle thereof) in future operations (delete, etc.)

The ‹size> parameter gives the size in bytes of the certificate to upload: after the command is issued, the user must provide the certificate size in bytes using the PEM (Privacy-enhanced Electronic Mail) format. Once ‹size> bytes have been received, the operation is automatically completed. If the certificate is successfully uploaded and verified, the response is OK. If the upload fails for some reason, then an error code is reported.

Maximum for certificates is 8 kB.

Writing a zero byte certificate at ID deletes the certificate stored at that index.

§Private key

This form of the command writes a private key in PEM format to the non-volatile memory. Maximum for private keys is 2 kB.

Note: Password encrypted private RSA keys are not supported.

Note: The MQTT broker can provide certificates and private keys files with < CR> < LF> (Carriage Return and Line Feed) endings. The parameter ‹size>, however, must not take the < CR› characters into account.

Fields§

§data_type: DataType§index: u8

Indexes O to 4 and 7 to 10 are reserved for Sequans’s internal use. Do not change their contents.

§size: usize

Size in bytes of the certificate to upload. A ‘O’ value removes the corresponding entry. See above for individual limits.

Important: The NVRAM has a maximum user capacity of 200 kB. Any attempt to store new data beyond that limit fails with ERROR.

Trait Implementations§

Source§

impl AtatCmd for PrepareWrite

Source§

const MAX_LEN: usize

The size of the buffer required to write the request.
Source§

type Response = NoResponse

The type of the response. Must implement the AtatResp trait.
Source§

fn write(&self, buf: &mut [u8]) -> usize

Write the command and return the number of written bytes.
Source§

fn parse( &self, res: Result<&[u8], InternalError<'_>>, ) -> Result<Self::Response, Error>

Parse the response into a Self::Response or Error instance.
Source§

const CAN_ABORT: bool = false

Whether or not this command can be aborted.
Source§

const MAX_TIMEOUT_MS: u32 = 1000

The max timeout in milliseconds.
Source§

const ATTEMPTS: u8 = 1

The max number of times to attempt a command with automatic retries if using send_retry.
Source§

const REATTEMPT_ON_PARSE_ERR: bool = true

Whether or not to reattempt a command on a parse error using send_retry.
Source§

const EXPECTS_RESPONSE_CODE: bool = true

Force client to look for a response. Empty slice is then passed to parse by client. Implemented to enhance expandability of ATAT
Source§

impl AtatLen for PrepareWrite

Source§

impl Clone for PrepareWrite

Source§

fn clone(&self) -> PrepareWrite

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Serialize for PrepareWrite

Source§

fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.