/*
 *
 *    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 Topaz-specific
 *	Nest Labs Nest Protect profile.
 *
 */

#ifndef WEAVE_PROFILES_NEST_PROTECT_TAGS_HPP
#define WEAVE_PROFILES_NEST_PROTECT_TAGS_HPP

namespace nl {

namespace Weave {

namespace Profiles {

namespace NestProtect {

// Nest Protect Tags
//
//                                Value     Tag Type         Element Type           Disposition
//                                ------------------------------------------------------------------

enum {
	kTag_TopazBucket        = 0x00,  // Fully-Qualified  Structure                   Required
};

}; // namespace NestProtect

}; // namespace Profiles

}; // namespace Weave

}; // namespace nl

#endif // WEAVE_PROFILES_NEST_PROTECT_TAGS_HPP
