/*
 *
 *    Copyright (c) 2013 Nest Labs, Inc.
 *    All rights reserved.
 *
 *    This document is the property of Nest. It is considered
 *    confidential and proprietary information.
 *
 *    This document may not be reproduced or transmitted in any form,
 *    in whole or in part, without the express written permission of
 *    Nest.
 *
 */

/**
 *    @file
 *      This file defines tags used in the Nest Labs Time-variant
 *      Data Profile.
 *
 */

#ifndef WEAVE_PROFILES_TIME_VARIANT_DATA_TAGS_HPP
#define WEAVE_PROFILES_TIME_VARIANT_DATA_TAGS_HPP

namespace nl {

namespace Weave {

namespace Profiles {

namespace TimeVariantData {

// Time-variant Data Tags
//
//                                Value     Tag Type     Element Type   Disposition
//                                -----------------------------------------------------

enum {
    kTag_Streams            = 0x01,  // Fully-Qualified  Structure      Required
    kTag_Version            = 0x02,  // Context          U8             Required
    kTag_Descriptors        = 0x03,  // Context          Array          Required
    kTag_Descriptor         = 0x04,  // Context          Structure      Required
    kTag_Identifier         = 0x05,  // Context          U16            Conditional
    kTag_Type               = 0x06,  // Context          U16 / U32      Required
    kTag_Derivation         = 0x07,  // Context          Structure      Optional
    kTag_Operation          = 0x08,  // Context          U16 / U32      Required
    kTag_Description        = 0x09,  // Context          UTF-8 String   Optional
    kTag_Stream_Periodicity = 0x0A,  // Context          Boolean        Required
    kTag_Time_Period        = 0x0B,  // Context          Structure / S  Conditional
    kTag_Fields             = 0x0C,  // Context          Array          Required
    kTag_Field              = 0x0D,  // Context          Structure      Required
    kTag_Valid              = 0x0E,  // Context          Boolean        Required
    kTag_Relative           = 0x0F,  // Context          Boolean        Conditional
    kTag_Signed             = 0x10,  // Context          Boolean        Conditional
    kTag_Size               = 0x11,  // Context          U8             Required
    kTag_Count              = 0x12,  // Context          U8             Required
    kTag_Units              = 0x13,  // Context          Structure      Optional
    kTag_System             = 0x14,  // Context          U8             Required
    kTag_Unit               = 0x15,  // Context          Structure      Required
    kTag_Quantity           = 0x16,  // Context          U8             Required
    kTag_Exponent           = 0x17,  // Context          S8             Optional
    kTag_Logical_Minimum    = 0x18,  // Context          Fixed          Optional
    kTag_Logical_Maximum    = 0x19,  // Context          Fixed          Optional
    kTag_Physical_Minimum   = 0x1A,  // Context          Fixed          Optional
    kTag_Physical_Maximum   = 0x1B,  // Context          Fixed          Optional
    kTag_Records            = 0x1C,  // Context          Array          Required
    kTag_Stream             = 0x1D,  // Context          Structure      Required
    kTag_Data               = 0x1E,  // Context          Data           Required
    kTag_Time_Base          = 0x1F,  // Context          Structure / S  Optional
    kTag_Reference          = 0x20,  // Context          U8             Required
    kTag_Synchronization    = 0x21,  // Context          U8             Required
    kTag_Operations         = 0x22   // Context          Array          Required
};

}; // namespace TimeVariantData

}; // namespace Profiles

}; // namespace Weave

}; // namespace nl

#endif // WEAVE_PROFILES_TIME_VARIANT_DATA_TAGS_HPP
