156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * File: 456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * eas_hostmm.c 556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Contents and purpose: 756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * This file contains the host wrapper functions for stdio, stdlib, etc. 856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * This is a sample version that maps the requested files to an 956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * allocated memory block and uses in-memory pointers to replace 1056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * file system calls. The file locator (EAS_FILE_LOCATOR) handle passed 1156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * HWOpenFile is the same one that is passed to EAS_OpenFile. If your 1256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * system stores data in fixed locations (such as flash) instead of 1356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * using a file system, you can use the locator handle to point to 1456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * your memory. You will need a way of knowing the length of the 1556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * data stored at that location in order to respond correctly in the 1656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * HW_FileLength function. 1756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 1856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Modify this file to suit the needs of your particular system. 1956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 2056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * EAS_MAX_FILE_HANDLES sets the maximum number of MIDI streams within 2156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * a MIDI type 1 file that can be played. 2256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 2356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * EAS_HW_FILE is a structure to support the file I/O functions. It 2456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * comprises the base memory pointer, the file read pointer, and 2556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * the dup flag, which when sets, indicates that the file handle has 2656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * been duplicated. If your system uses in-memory resources, you 2756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * can eliminate the duplicate handle logic, and simply copy the 2856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * base memory pointer and file read pointer to the duplicate handle. 2956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 3056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Copyright 2005 Sonic Network Inc. 317df30109963092559d3760c0661a020f9daf1030The Android Open Source Project 327df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 337df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * you may not use this file except in compliance with the License. 347df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * You may obtain a copy of the License at 357df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * 367df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 377df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * 387df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 397df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 407df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 417df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * See the License for the specific language governing permissions and 427df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * limitations under the License. 4356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 4456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 4556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Revision Control: 4656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * $Revision: 795 $ 4756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * $Date: 2007-08-01 00:14:45 -0700 (Wed, 01 Aug 2007) $ 4856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 4956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 5056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 5156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#ifdef _lint 5256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#include "lint_stdlib.h" 5356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#else 5456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#include <stdio.h> 5556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#include <stdlib.h> 5656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#include <string.h> 5756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#endif 5856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 5956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#include "eas_host.h" 6056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 6156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/* Only for debugging LED, vibrate, and backlight functions */ 6256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#include "eas_report.h" 6356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 6456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/* this module requires dynamic memory support */ 6556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#ifdef _STATIC_MEMORY 6656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#error "eas_hostmm.c requires the dynamic memory model!\n" 6756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#endif 6856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 6956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#ifndef EAS_MAX_FILE_HANDLES 7056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#define EAS_MAX_FILE_HANDLES 32 7156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks#endif 7256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 7356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/* 7456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * this structure and the related function are here 7556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * to support the ability to create duplicate handles 7656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * and buffering it in memory. If your system uses 7756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * in-memory resources, you can eliminate the calls 7856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * to malloc and free, the dup flag, and simply track 7956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * the file size and read position. 8056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks */ 8156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparkstypedef struct eas_hw_file_tag 8256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{ 8356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_I32 fileSize; 8456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_I32 filePos; 8556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_BOOL dup; 8656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_U8 *buffer; 8756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} EAS_HW_FILE; 8856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 8956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparkstypedef struct eas_hw_inst_data_tag 9056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{ 9156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_HW_FILE files[EAS_MAX_FILE_HANDLES]; 9256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} EAS_HW_INST_DATA; 9356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 9456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 9556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * EAS_HWInit 9656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 9756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Initialize host wrapper interface 9856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 9956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 10056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 10156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave SparksEAS_RESULT EAS_HWInit (EAS_HW_DATA_HANDLE *pHWInstData) 10256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{ 10356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 10456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* need to track file opens for duplicate handles */ 10556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *pHWInstData = malloc(sizeof(EAS_HW_INST_DATA)); 10656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks if (!(*pHWInstData)) 10756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return EAS_ERROR_MALLOC_FAILED; 10856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 10956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_HWMemSet(*pHWInstData, 0, sizeof(EAS_HW_INST_DATA)); 11056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return EAS_SUCCESS; 11156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} 11256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 11356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 11456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * EAS_HWShutdown 11556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 11656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Shut down host wrapper interface 11756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 11856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 11956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 12056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave SparksEAS_RESULT EAS_HWShutdown (EAS_HW_DATA_HANDLE hwInstData) 12156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{ 12256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 12356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks free(hwInstData); 12456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return EAS_SUCCESS; 12556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} 12656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 12756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 12856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 12956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * EAS_HWMalloc 13056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 13156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Allocates dynamic memory 13256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 13356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 13456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 13556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*lint -esym(715, hwInstData) hwInstData available for customer use */ 13656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparksvoid *EAS_HWMalloc (EAS_HW_DATA_HANDLE hwInstData, EAS_I32 size) 13756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{ 13856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return malloc((size_t) size); 13956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} 14056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 14156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 14256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 14356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * EAS_HWFree 14456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 14556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Frees dynamic memory 14656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 14756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 14856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 14956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*lint -esym(715, hwInstData) hwInstData available for customer use */ 15056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparksvoid EAS_HWFree (EAS_HW_DATA_HANDLE hwInstData, void *p) 15156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{ 15256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks free(p); 15356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} 15456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 15556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 15656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 15756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * EAS_HWMemCpy 15856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 15956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Copy memory wrapper 16056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 16156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 16256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 16356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparksvoid *EAS_HWMemCpy (void *dest, const void *src, EAS_I32 amount) 16456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{ 16556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return memcpy(dest, src, (size_t) amount); 16656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} 16756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 16856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 16956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 17056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * EAS_HWMemSet 17156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 17256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Set memory wrapper 17356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 17456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 17556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 17656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparksvoid *EAS_HWMemSet (void *dest, int val, EAS_I32 amount) 17756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{ 17856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return memset(dest, val, (size_t) amount); 17956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} 18056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 18156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 18256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 18356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * EAS_HWMemCmp 18456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 18556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Compare memory wrapper 18656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 18756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 18856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 18956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave SparksEAS_I32 EAS_HWMemCmp (const void *s1, const void *s2, EAS_I32 amount) 19056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{ 19156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return (EAS_I32) memcmp(s1, s2, (size_t) amount); 19256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} 19356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 19456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 19556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 19656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * EAS_HWOpenFile 19756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 19856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Open a file for read or write 19956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 20056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 20156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 20256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave SparksEAS_RESULT EAS_HWOpenFile (EAS_HW_DATA_HANDLE hwInstData, EAS_FILE_LOCATOR locator, EAS_FILE_HANDLE *pFile, EAS_FILE_MODE mode) 20356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{ 20456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_HW_FILE *file; 20556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks FILE *ioFile; 20656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks int i, temp; 20756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 20856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* set return value to NULL */ 20956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *pFile = NULL; 21056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 21156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* only support read mode at this time */ 21256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks if (mode != EAS_FILE_READ) 21356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return EAS_ERROR_INVALID_FILE_MODE; 21456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 21556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* find an empty entry in the file table */ 21656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks file = hwInstData->files; 21756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks for (i = 0; i < EAS_MAX_FILE_HANDLES; i++) 21856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks { 21956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* is this slot being used? */ 22056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks if (file->buffer == NULL) 22156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks { 22256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* open the file */ 22356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks if ((ioFile = fopen(locator,"rb")) == NULL) 22456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return EAS_ERROR_FILE_OPEN_FAILED; 22556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 22656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* determine the file size */ 22756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks if (fseek(ioFile, 0L, SEEK_END) != 0) 22856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return EAS_ERROR_FILE_LENGTH; 22956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks if ((file->fileSize = ftell(ioFile)) == -1L) 23056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return EAS_ERROR_FILE_LENGTH; 23156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks if (fseek(ioFile, 0L, SEEK_SET) != 0) 23256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return EAS_ERROR_FILE_LENGTH; 23356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 23456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* allocate a buffer */ 23556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks file->buffer = EAS_HWMalloc(hwInstData, file->fileSize); 23656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks if (file->buffer == NULL) 23756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks { 23856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks fclose(ioFile); 23956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return EAS_ERROR_MALLOC_FAILED; 24056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks } 24156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 24256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* read the file into memory */ 24356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks temp = (int) fread(file->buffer, (size_t) file->fileSize, 1, ioFile); 24456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 24556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* close the file - don't need it any more */ 24656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks fclose(ioFile); 24756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 24856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* check for error reading file */ 24956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks if (temp != 1) 25056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return EAS_ERROR_FILE_READ_FAILED; 25156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 25256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* initialize some values */ 25356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks file->filePos = 0; 25456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks file->dup = EAS_FALSE; 25556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 25656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *pFile = file; 25756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return EAS_SUCCESS; 25856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks } 25956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks file++; 26056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks } 26156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 26256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* too many open files */ 26356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return EAS_ERROR_MAX_FILES_OPEN; 26456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} 26556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 26656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 26756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 26856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * EAS_HWReadFile 26956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 27056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Read data from a file 27156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 27256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 27356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 27456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*lint -esym(715, hwInstData) hwInstData available for customer use */ 27556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave SparksEAS_RESULT EAS_HWReadFile (EAS_HW_DATA_HANDLE hwInstData, EAS_FILE_HANDLE file, void *pBuffer, EAS_I32 n, EAS_I32 *pBytesRead) 27656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{ 27756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_I32 count; 27856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 27956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* make sure we have a valid handle */ 28056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks if (file->buffer == NULL) 28156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return EAS_ERROR_INVALID_HANDLE; 28256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 28356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* calculate the bytes to read */ 28456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks count = file->fileSize - file->filePos; 28556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks if (n < count) 28656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks count = n; 28756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 28856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* copy the data to the requested location, and advance the pointer */ 28956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks if (count) 29056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_HWMemCpy(pBuffer, &file->buffer[file->filePos], count); 29156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks file->filePos += count; 29256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *pBytesRead = count; 29356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 29456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* were n bytes read? */ 29556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks if (count!= n) 29656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return EAS_EOF; 29756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return EAS_SUCCESS; 29856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} 29956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 30056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 30156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 30256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * EAS_HWGetByte 30356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 30456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Read a byte from a file 30556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 30656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 30756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 30856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*lint -esym(715, hwInstData) hwInstData available for customer use */ 30956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave SparksEAS_RESULT EAS_HWGetByte (EAS_HW_DATA_HANDLE hwInstData, EAS_FILE_HANDLE file, void *p) 31056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{ 31156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 31256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* make sure we have a valid handle */ 31356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks if (file->buffer == NULL) 31456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return EAS_ERROR_INVALID_HANDLE; 31556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 31656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* check for end of file */ 31756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks if (file->filePos >= file->fileSize) 31856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks { 31956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *((EAS_U8*) p) = 0; 32056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return EAS_EOF; 32156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks } 32256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 32356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* get a character from the buffer */ 32456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *((EAS_U8*) p) = file->buffer[file->filePos++]; 32556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return EAS_SUCCESS; 32656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} 32756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 32856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 32956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 33056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * EAS_HWGetWord 33156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 33256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Returns the current location in the file 33356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 33456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 33556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 33656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*lint -esym(715, hwInstData) hwInstData available for customer use */ 33756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave SparksEAS_RESULT EAS_HWGetWord (EAS_HW_DATA_HANDLE hwInstData, EAS_FILE_HANDLE file, void *p, EAS_BOOL msbFirst) 33856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{ 33956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_RESULT result; 34056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_U8 c1, c2; 34156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 34256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* read 2 bytes from the file */ 34356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks if ((result = EAS_HWGetByte(hwInstData, file, &c1)) != EAS_SUCCESS) 34456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return result; 34556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks if ((result = EAS_HWGetByte(hwInstData, file, &c2)) != EAS_SUCCESS) 34656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return result; 34756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 34856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* order them as requested */ 34956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks if (msbFirst) 35056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *((EAS_U16*) p) = ((EAS_U16) c1 << 8) | c2; 35156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks else 35256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *((EAS_U16*) p) = ((EAS_U16) c2 << 8) | c1; 35356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 35456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return EAS_SUCCESS; 35556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} 35656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 35756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 35856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 35956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * EAS_HWGetDWord 36056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 36156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Returns the current location in the file 36256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 36356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 36456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 36556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*lint -esym(715, hwInstData) hwInstData available for customer use */ 36656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave SparksEAS_RESULT EAS_HWGetDWord (EAS_HW_DATA_HANDLE hwInstData, EAS_FILE_HANDLE file, void *p, EAS_BOOL msbFirst) 36756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{ 36856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_RESULT result; 36956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_U8 c1, c2,c3,c4; 37056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 37156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* read 4 bytes from the file */ 37256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks if ((result = EAS_HWGetByte(hwInstData, file, &c1)) != EAS_SUCCESS) 37356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return result; 37456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks if ((result = EAS_HWGetByte(hwInstData, file, &c2)) != EAS_SUCCESS) 37556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return result; 37656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks if ((result = EAS_HWGetByte(hwInstData, file, &c3)) != EAS_SUCCESS) 37756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return result; 37856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks if ((result = EAS_HWGetByte(hwInstData, file, &c4)) != EAS_SUCCESS) 37956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return result; 38056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 38156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* order them as requested */ 38256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks if (msbFirst) 38356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *((EAS_U32*) p) = ((EAS_U32) c1 << 24) | ((EAS_U32) c2 << 16) | ((EAS_U32) c3 << 8) | c4; 38456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks else 38556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *((EAS_U32*) p)= ((EAS_U32) c4 << 24) | ((EAS_U32) c3 << 16) | ((EAS_U32) c2 << 8) | c1; 38656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 38756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return EAS_SUCCESS; 38856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} 38956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 39056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 39156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 39256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * EAS_HWFilePos 39356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 39456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Returns the current location in the file 39556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 39656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 39756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 39856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*lint -esym(715, hwInstData) hwInstData available for customer use */ 39956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave SparksEAS_RESULT EAS_HWFilePos (EAS_HW_DATA_HANDLE hwInstData, EAS_FILE_HANDLE file, EAS_I32 *pPosition) 40056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{ 40156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 40256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* make sure we have a valid handle */ 40356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks if (file->buffer == NULL) 40456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return EAS_ERROR_INVALID_HANDLE; 40556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 40656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *pPosition = file->filePos; 40756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return EAS_SUCCESS; 40856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} /* end EAS_HWFilePos */ 40956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 41056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 41156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 41256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * EAS_HWFileSeek 41356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 41456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Seek to a specific location in the file 41556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 41656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 41756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 41856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*lint -esym(715, hwInstData) hwInstData available for customer use */ 41956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave SparksEAS_RESULT EAS_HWFileSeek (EAS_HW_DATA_HANDLE hwInstData, EAS_FILE_HANDLE file, EAS_I32 position) 42056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{ 42156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 42256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* make sure we have a valid handle */ 42356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks if (file->buffer == NULL) 42456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return EAS_ERROR_INVALID_HANDLE; 42556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 42656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* validate new position */ 42756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks if ((position < 0) || (position > file->fileSize)) 42856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return EAS_ERROR_FILE_SEEK; 42956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 43056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* save new position */ 43156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks file->filePos = position; 43256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return EAS_SUCCESS; 43356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} 43456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 43556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 43656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 43756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * EAS_HWFileSeekOfs 43856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 43956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Seek forward or back relative to the current position 44056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 44156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 44256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 44356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*lint -esym(715, hwInstData) hwInstData available for customer use */ 44456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave SparksEAS_RESULT EAS_HWFileSeekOfs (EAS_HW_DATA_HANDLE hwInstData, EAS_FILE_HANDLE file, EAS_I32 position) 44556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{ 44656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 44756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* make sure we have a valid handle */ 44856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks if (file->buffer == NULL) 44956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return EAS_ERROR_INVALID_HANDLE; 45056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 45156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* determine the file position */ 45256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks position += file->filePos; 45356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks if ((position < 0) || (position > file->fileSize)) 45456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return EAS_ERROR_FILE_SEEK; 45556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 45656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* save new position */ 45756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks file->filePos = position; 45856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return EAS_SUCCESS; 45956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} 46056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 46156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 46256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 46356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * EAS_HWFileLength 46456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 46556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Return the file length 46656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 46756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 46856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 46956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*lint -esym(715, hwInstData) hwInstData available for customer use */ 47056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave SparksEAS_RESULT EAS_HWFileLength (EAS_HW_DATA_HANDLE hwInstData, EAS_FILE_HANDLE file, EAS_I32 *pLength) 47156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{ 47256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 47356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* make sure we have a valid handle */ 47456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks if (file->buffer == NULL) 47556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return EAS_ERROR_INVALID_HANDLE; 47656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 47756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *pLength = file->fileSize; 47856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return EAS_SUCCESS; 47956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} 48056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 48156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 48256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 48356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * EAS_HWDupHandle 48456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 48556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Duplicate a file handle 48656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 48756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 48856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 48956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave SparksEAS_RESULT EAS_HWDupHandle (EAS_HW_DATA_HANDLE hwInstData, EAS_FILE_HANDLE file, EAS_FILE_HANDLE *pDupFile) 49056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{ 49156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_HW_FILE *dupFile; 49256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks int i; 49356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 49456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* make sure we have a valid handle */ 49556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks if (file->buffer == NULL) 49656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return EAS_ERROR_INVALID_HANDLE; 49756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 49856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* find an empty entry in the file table */ 49956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks dupFile = hwInstData->files; 50056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks for (i = 0; i < EAS_MAX_FILE_HANDLES; i++) 50156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks { 50256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* is this slot being used? */ 50356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks if (dupFile->buffer == NULL) 50456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks { 50556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 50656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* copy info from the handle to be duplicated */ 50756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks dupFile->filePos = file->filePos; 50856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks dupFile->fileSize = file->fileSize; 50956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks dupFile->buffer = file->buffer; 51056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 51156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* set the duplicate handle flag */ 51256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks dupFile->dup = file->dup = EAS_TRUE; 51356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 51456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *pDupFile = dupFile; 51556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return EAS_SUCCESS; 51656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks } 51756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks dupFile++; 51856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks } 51956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 52056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* too many open files */ 52156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return EAS_ERROR_MAX_FILES_OPEN; 52256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} 52356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 52456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 52556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 52656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * EAS_HWClose 52756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 52856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Wrapper for fclose function 52956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 53056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 53156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 53256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave SparksEAS_RESULT EAS_HWCloseFile (EAS_HW_DATA_HANDLE hwInstData, EAS_FILE_HANDLE file1) 53356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{ 53456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_HW_FILE *file2,*dupFile; 53556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks int i; 53656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 53756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 53856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* make sure we have a valid handle */ 53956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks if (file1->buffer == NULL) 54056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return EAS_ERROR_INVALID_HANDLE; 54156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 54256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* check for duplicate handle */ 54356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks if (file1->dup) 54456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks { 54556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks dupFile = NULL; 54656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks file2 = hwInstData->files; 54756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks for (i = 0; i < EAS_MAX_FILE_HANDLES; i++) 54856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks { 54956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* check for duplicate */ 55056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks if ((file1 != file2) && (file2->buffer == file1->buffer)) 55156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks { 55256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* is there more than one duplicate? */ 55356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks if (dupFile != NULL) 55456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks { 55556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* clear this entry and return */ 55656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks file1->buffer = NULL; 55756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return EAS_SUCCESS; 55856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks } 55956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 56056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* this is the first duplicate found */ 56156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks else 56256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks dupFile = file2; 56356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks } 56456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks file2++; 56556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks } 56656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 56756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* there is only one duplicate, clear the dup flag */ 56856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks if (dupFile) 56956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks dupFile->dup = EAS_FALSE; 57056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks else 57156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* if we get here, there's a serious problem */ 57256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return EAS_ERROR_HANDLE_INTEGRITY; 57356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 57456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* clear this entry and return */ 57556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks file1->buffer = NULL; 57656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return EAS_SUCCESS; 57756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks } 57856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 57956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* no duplicates -free the buffer */ 58056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_HWFree(hwInstData, file1->buffer); 58156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 58256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* clear this entry and return */ 58356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks file1->buffer = NULL; 58456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return EAS_SUCCESS; 58556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} 58656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 58756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 58856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 58956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * EAS_HWVibrate 59056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 59156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Turn on/off vibrate function 59256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 59356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 59456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 59556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*lint -esym(715, hwInstData) hwInstData available for customer use */ 59656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave SparksEAS_RESULT EAS_HWVibrate (EAS_HW_DATA_HANDLE hwInstData, EAS_BOOL state) 59756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{ 59856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_ReportEx(_EAS_SEVERITY_NOFILTER, 0x1a54b6e8, 0x00000001 , state); 59956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return EAS_SUCCESS; 60056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} /* end EAS_HWVibrate */ 60156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 60256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 60356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 60456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * EAS_HWLED 60556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 60656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Turn on/off LED 60756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 60856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 60956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 61056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*lint -esym(715, hwInstData) hwInstData available for customer use */ 61156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave SparksEAS_RESULT EAS_HWLED (EAS_HW_DATA_HANDLE hwInstData, EAS_BOOL state) 61256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{ 61356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_ReportEx(_EAS_SEVERITY_NOFILTER, 0x1a54b6e8, 0x00000002 , state); 61456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return EAS_SUCCESS; 61556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} 61656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 61756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 61856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 61956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * EAS_HWBackLight 62056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 62156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * Turn on/off backlight 62256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 62356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 62456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 62556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*lint -esym(715, hwInstData) hwInstData available for customer use */ 62656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave SparksEAS_RESULT EAS_HWBackLight (EAS_HW_DATA_HANDLE hwInstData, EAS_BOOL state) 62756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{ 62856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks EAS_ReportEx(_EAS_SEVERITY_NOFILTER, 0x1a54b6e8, 0x00000003 , state); 62956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return EAS_SUCCESS; 63056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} 63156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 63256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*---------------------------------------------------------------------------- 63356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 63456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * EAS_HWYield 63556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 63656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * This function is called periodically by the EAS library to give the 63756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * host an opportunity to allow other tasks to run. There are two ways to 63856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * use this call: 63956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 64056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * If you have a multi-tasking OS, you can call the yield function in the 64156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * OS to allow other tasks to run. In this case, return EAS_FALSE to tell 64256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * the EAS library to continue processing when control returns from this 64356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * function. 64456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 64556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * If tasks run in a single thread by sequential function calls (sometimes 64656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * call a "commutator loop"), return EAS_TRUE to cause the EAS Library to 64756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * return to the caller. Be sure to check the number of bytes rendered 64856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * before passing the audio buffer to the codec - it may not be filled. 64956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * The next call to EAS_Render will continue processing until the buffer 65056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * has been filled. 65156c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks * 65256c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks *---------------------------------------------------------------------------- 65356c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks*/ 65456c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks/*lint -esym(715, hwInstData) hwInstData available for customer use */ 65556c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave SparksEAS_BOOL EAS_HWYield (EAS_HW_DATA_HANDLE hwInstData) 65656c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks{ 65756c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks /* put your code here */ 65856c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks return EAS_FALSE; 65956c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks} 66056c99cd2c2c1e6ab038dac5fced5b92ccf11ff6cDave Sparks 661