/* -*- compile-command: "cd ../linux && make MEMDEBUG=TRUE -j3"; -*- */ /* * Copyright 2020 by Eric House (xwords@eehouse.org). All rights reserved. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "device.h" #include "comtypes.h" #include "memstream.h" #include "xwstream.h" #ifdef XWFEATURE_DEVICE # define KEY_DEVSTATE PERSIST_KEY("devState") typedef struct _DevCtxt { XP_U16 devCount; } DevCtxt; static XWStreamCtxt* mkStream( XW_DUtilCtxt* dutil ) { XWStreamCtxt* stream = mem_stream_make_raw( MPPARM(dutil->mpool) dutil_getVTManager(dutil) ); return stream; } static DevCtxt* load( XW_DUtilCtxt* dutil ) { LOG_FUNC(); DevCtxt* state = (DevCtxt*)dutil->devCtxt; if ( NULL == state ) { XWStreamCtxt* stream = mkStream( dutil ); dutil_loadStream( dutil, KEY_DEVSTATE, stream ); state = XP_CALLOC( dutil->mpool, sizeof(*state) ); dutil->devCtxt = state; if ( 0 < stream_getSize( stream ) ) { state->devCount = stream_getU16( stream ); ++state->devCount; /* for testing until something's there */ /* XP_LOGF( "%s(): read devCount: %d", __func__, state->devCount ); */ } else { XP_LOGF( "%s(): empty stream!!", __func__ ); } stream_destroy( stream ); } return state; } void device_store( XW_DUtilCtxt* dutil ) { LOG_FUNC(); DevCtxt* state = load( dutil ); XWStreamCtxt* stream = mkStream( dutil ); stream_putU16( stream, state->devCount ); dutil_storeStream( dutil, KEY_DEVSTATE, stream ); stream_destroy( stream ); XP_FREEP( dutil->mpool, &dutil->devCtxt ); } #endif