1dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines/* 2dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines * Copyright (C) 2008 The Android Open Source Project 3dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines * 4dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines * Licensed under the Apache License, Version 2.0 (the "License"); 5dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines * you may not use this file except in compliance with the License. 6dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines * You may obtain a copy of the License at 7dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines * 8dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines * http://www.apache.org/licenses/LICENSE-2.0 9dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines * 1037ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines * Unless required by applicable law or agreed to in writing, software 1137ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines * distributed under the License is distributed on an "AS IS" BASIS, 12dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar * See the License for the specific language governing permissions and 14dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines * limitations under the License. 15dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines */ 16dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 17dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines#ifndef bbf_L06_DNS_3X3_FTR_EM_H 18dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines#define bbf_L06_DNS_3X3_FTR_EM_H 19dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 20dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines/* ---- includes ----------------------------------------------------------- */ 21dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 22dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines#include "b_BasicEm/Context.h" 23dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines#include "b_BasicEm/Basic.h" 24dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines#include "b_BasicEm/UInt32Arr.h" 25de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar#include "b_BasicEm/MemTbl.h" 26dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines#include "b_BitFeatureEm/Feature.h" 27dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 28dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines/* ---- related objects --------------------------------------------------- */ 29c6a4f5e819217e1e12c458aed8e7b122e23a3a58Stephen Hines 30c6a4f5e819217e1e12c458aed8e7b122e23a3a58Stephen Hines/* ---- typedefs ----------------------------------------------------------- */ 31c6a4f5e819217e1e12c458aed8e7b122e23a3a58Stephen Hines 32dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines/* ---- constants ---------------------------------------------------------- */ 33dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 34dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines/* data format version number */ 35dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines#define bbf_L06_DNS_3X3_FTR_VERSION 100 36dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 37dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines/* ---- object definition -------------------------------------------------- */ 38dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 39dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines/** discrete feature set */ 40dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesstruct bbf_L06Dns3x3Ftr 41dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines{ 42dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines /* ---- private data --------------------------------------------------- */ 43dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 44dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines /* ---- public data ---------------------------------------------------- */ 45dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 46dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines /** base element */ 47dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines struct bbf_Feature baseE; 48dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 49dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines /** data array */ 50dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines struct bbs_UInt32Arr dataArrE; 51dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 52dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines /** factor to convert activity to proper range */ 53dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines uint32 activityFactorE; 54dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines}; 55dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 56de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar/* ---- associated objects ------------------------------------------------- */ 57dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 58dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines/* ---- external functions ------------------------------------------------- */ 59dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 60dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines/* ---- \ghd{ constructor/destructor } ------------------------------------- */ 61dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 62dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines/** initializes bbf_L06Dns3x3Ftr */ 63dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesvoid bbf_L06Dns3x3Ftr_init( struct bbs_Context* cpA, 64 struct bbf_L06Dns3x3Ftr* ptrA ); 65 66/** resets bbf_L06Dns3x3Ftr */ 67void bbf_L06Dns3x3Ftr_exit( struct bbs_Context* cpA, 68 struct bbf_L06Dns3x3Ftr* ptrA ); 69 70/* ---- \ghd{ operators } -------------------------------------------------- */ 71 72/** copy operator */ 73void bbf_L06Dns3x3Ftr_copy( struct bbs_Context* cpA, 74 struct bbf_L06Dns3x3Ftr* ptrA, 75 const struct bbf_L06Dns3x3Ftr* srcPtrA ); 76 77/** equal operator */ 78flag bbf_L06Dns3x3Ftr_equal( struct bbs_Context* cpA, 79 const struct bbf_L06Dns3x3Ftr* ptrA, 80 const struct bbf_L06Dns3x3Ftr* srcPtrA ); 81 82/* ---- \ghd{ query functions } -------------------------------------------- */ 83 84/* ---- \ghd{ modify functions } ------------------------------------------- */ 85 86/* ---- \ghd{ memory I/O } ------------------------------------------------- */ 87 88/** word size (16-bit) object needs when written to memory */ 89uint32 bbf_L06Dns3x3Ftr_memSize( struct bbs_Context* cpA, 90 const struct bbf_L06Dns3x3Ftr* ptrA ); 91 92/** writes object to memory; returns number of words (16-bit) written */ 93uint32 bbf_L06Dns3x3Ftr_memWrite( struct bbs_Context* cpA, 94 const struct bbf_L06Dns3x3Ftr* ptrA, uint16* memPtrA ); 95 96/** reads object from memory; returns number of words (16-bit) read */ 97uint32 bbf_L06Dns3x3Ftr_memRead( struct bbs_Context* cpA, 98 struct bbf_L06Dns3x3Ftr* ptrA, 99 const uint16* memPtrA, 100 struct bbs_MemTbl* mtpA ); 101 102/* ---- \ghd{ exec functions } --------------------------------------------- */ 103 104/** computes feature's activity (4.28) on the given patch */ 105int32 bbf_L06Dns3x3Ftr_activity( const struct bbf_Feature* ptrA, const uint32* patchA ); 106 107#endif /* bbf_L06_DNS_3X3_FTR_EM_H */ 108 109