com.geotab.model.entity.textmessage.MimeContent Maven / Gradle / Ivy
package com.geotab.model.entity.textmessage;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.geotab.model.serialization.serdes.ByteArrayDeserializer;
import com.geotab.model.serialization.serdes.ByteArraySerializer;
import java.time.Duration;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
/**
* The contents of a {@link TextMessage} containing data to give to a IOX Add-On over an RS232. It holds more data than
* SerialIoxContent and is not compatible with all Add-Ons. For more information regarding Add-On compatible please
* contact your reseller.
*
* MimeContent is converted into bytes with a specific format. The first byte is the length of
* the MimeType (N). The next N bytes are the ASCII encoded bytes of the MimeType string. The next two bytes are the
* length of the Data (L). Finally, the next L bytes are the Data. Messages from MyGeotab will be delivered in this
* format and messages to MyGeotab must be in this format as well.
*/
@Getter @Setter
@NoArgsConstructor
public class MimeContent extends TextMessageContentType {
/**
* Gets or sets the media type of content contained in the data field. Free string, Maximum 255 characters.
*/
private String mimeType;
/**
* The raw bytes to either send to an Add-On or that were received from an Add-On. Maximum 32767 bytes can be sent in
* a single message.
*/
@JsonDeserialize(using = ByteArrayDeserializer.class)
@JsonSerialize(using = ByteArraySerializer.class)
private Byte[] data;
/**
* The channel number to send to an Add-On or that were received from an Add-On.
*/
private Integer channelNumber;
/**
* The delay to use between sending binary data packets to the GO Device.
*/
@Deprecated
private Duration binaryDataPacketDelay;
/**
* The component type.
*/
private Integer componentType;
@Builder(builderMethodName = "mimeContentBuilder")
public MimeContent(String mimeType, Byte[] data, Integer channelNumber, Integer componentType) {
super(MessageContentType.MIME_CONTENT);
this.mimeType = mimeType;
this.data = data;
this.channelNumber = channelNumber;
this.componentType = componentType;
}
}