Library for the MAX7219 LED display driver

Fork of MAX7219 by Maxim Integrated

Committer:
viewdeep51
Date:
Sat Apr 28 10:15:36 2018 +0000
Revision:
6:7e3d1bcc15df
Parent:
5:0912d18d072f
final_code dated 28/04/18

Who changed what in which revision?

UserRevisionLine numberNew contents of line
j3 0:798fb343e022 1 /******************************************************************//**
j3 0:798fb343e022 2 * @file max7219.cpp
j3 0:798fb343e022 3 * Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.
j3 0:798fb343e022 4 *
j3 0:798fb343e022 5 * Permission is hereby granted, free of charge, to any person obtaining a
j3 0:798fb343e022 6 * copy of this software and associated documentation files (the "Software"),
j3 0:798fb343e022 7 * to deal in the Software without restriction, including without limitation
j3 0:798fb343e022 8 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
j3 0:798fb343e022 9 * and/or sell copies of the Software, and to permit persons to whom the
j3 0:798fb343e022 10 * Software is furnished to do so, subject to the following conditions:
j3 0:798fb343e022 11 *
j3 0:798fb343e022 12 * The above copyright notice and this permission notice shall be included
j3 0:798fb343e022 13 * in all copies or substantial portions of the Software.
j3 0:798fb343e022 14 *
j3 0:798fb343e022 15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
j3 0:798fb343e022 16 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
j3 0:798fb343e022 17 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
j3 0:798fb343e022 18 * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
j3 0:798fb343e022 19 * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
j3 0:798fb343e022 20 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
j3 0:798fb343e022 21 * OTHER DEALINGS IN THE SOFTWARE.
j3 0:798fb343e022 22 *
j3 0:798fb343e022 23 * Except as contained in this notice, the name of Maxim Integrated
j3 0:798fb343e022 24 * Products, Inc. shall not be used except as stated in the Maxim Integrated
j3 0:798fb343e022 25 * Products, Inc. Branding Policy.
j3 0:798fb343e022 26 *
j3 0:798fb343e022 27 * The mere transfer of this software does not imply any licenses
j3 0:798fb343e022 28 * of trade secrets, proprietary technology, copyrights, patents,
j3 0:798fb343e022 29 * trademarks, maskwork rights, or any other form of intellectual
j3 0:798fb343e022 30 * property whatsoever. Maxim Integrated Products, Inc. retains all
j3 0:798fb343e022 31 * ownership rights.
j3 0:798fb343e022 32 **********************************************************************/
j3 0:798fb343e022 33
j3 0:798fb343e022 34
j3 0:798fb343e022 35 #include "max7219.h"
j3 0:798fb343e022 36
j3 0:798fb343e022 37
j3 0:798fb343e022 38 //*********************************************************************
j3 0:798fb343e022 39 Max7219::Max7219(SPI *spi_bus, PinName cs): _p_spi(spi_bus)
j3 0:798fb343e022 40 {
j3 0:798fb343e022 41 _num_devices = 1;
j3 0:798fb343e022 42
j3 0:798fb343e022 43 _p_cs = new DigitalOut(cs, 1);
j3 0:798fb343e022 44 _spi_owner = false;
j3 0:798fb343e022 45 }
j3 0:798fb343e022 46
j3 0:798fb343e022 47
j3 0:798fb343e022 48 //*********************************************************************
j3 0:798fb343e022 49 Max7219::Max7219(PinName mosi, PinName miso, PinName sclk, PinName cs)
j3 0:798fb343e022 50 {
j3 0:798fb343e022 51 _num_devices = 1;
j3 0:798fb343e022 52
j3 0:798fb343e022 53 _p_spi = new SPI(mosi, miso, sclk);
j3 0:798fb343e022 54 _p_cs = new DigitalOut(cs, 1);
j3 0:798fb343e022 55
j3 0:798fb343e022 56 _spi_owner = true;
j3 0:798fb343e022 57 }
j3 0:798fb343e022 58
j3 0:798fb343e022 59
j3 0:798fb343e022 60 //*********************************************************************
j3 0:798fb343e022 61 Max7219::~Max7219()
j3 0:798fb343e022 62 {
j3 0:798fb343e022 63 delete _p_cs;
j3 0:798fb343e022 64
j3 0:798fb343e022 65 if(_spi_owner)
j3 0:798fb343e022 66 {
j3 0:798fb343e022 67 delete _p_spi;
j3 0:798fb343e022 68 }
j3 0:798fb343e022 69 }
j3 0:798fb343e022 70
j3 0:798fb343e022 71
j3 0:798fb343e022 72 //*********************************************************************
j3 0:798fb343e022 73 int32_t Max7219::set_num_devices(uint8_t num_devices)
j3 0:798fb343e022 74 {
j3 0:798fb343e022 75 int32_t rtn_val = -1;
j3 0:798fb343e022 76
j3 0:798fb343e022 77 if(num_devices > 0)
j3 0:798fb343e022 78 {
j3 0:798fb343e022 79 _num_devices = num_devices;
j3 0:798fb343e022 80 rtn_val = _num_devices;
j3 0:798fb343e022 81 }
j3 0:798fb343e022 82
j3 0:798fb343e022 83 return(rtn_val);
j3 0:798fb343e022 84 }
j3 0:798fb343e022 85
j3 0:798fb343e022 86
j3 0:798fb343e022 87 //*********************************************************************
j3 0:798fb343e022 88 void Max7219::set_display_test(void)
j3 0:798fb343e022 89 {
j3 0:798fb343e022 90 uint8_t idx = 0;
j3 0:798fb343e022 91
j3 0:798fb343e022 92 _p_cs->write(0);
j3 0:798fb343e022 93 for(idx = 0; idx < _num_devices; idx++)
j3 0:798fb343e022 94 {
j3 0:798fb343e022 95 _p_spi->write(MAX7219_DISPLAY_TEST);
j3 0:798fb343e022 96 _p_spi->write(1);
j3 0:798fb343e022 97 }
j3 0:798fb343e022 98 _p_cs->write(1);
j3 0:798fb343e022 99 }
j3 0:798fb343e022 100
j3 0:798fb343e022 101
j3 0:798fb343e022 102 //*********************************************************************
j3 0:798fb343e022 103 void Max7219::clear_display_test(void)
j3 0:798fb343e022 104 {
j3 0:798fb343e022 105 uint8_t idx = 0;
j3 0:798fb343e022 106
j3 0:798fb343e022 107 _p_cs->write(0);
j3 0:798fb343e022 108 for(idx = 0; idx < _num_devices; idx++)
j3 0:798fb343e022 109 {
j3 0:798fb343e022 110 _p_spi->write(MAX7219_DISPLAY_TEST);
j3 0:798fb343e022 111 _p_spi->write(0);
j3 0:798fb343e022 112 }
j3 0:798fb343e022 113 _p_cs->write(1);
j3 0:798fb343e022 114 }
j3 0:798fb343e022 115
j3 0:798fb343e022 116
j3 0:798fb343e022 117 //*********************************************************************
j3 1:90a7cf4e7d26 118 int32_t Max7219::init_device(max7219_configuration_t config)
j3 0:798fb343e022 119 {
j3 0:798fb343e022 120 int32_t rtn_val = -1;
j3 0:798fb343e022 121 uint8_t idx = 0;
j3 0:798fb343e022 122
j3 0:798fb343e022 123 if(config.device_number > _num_devices)
j3 0:798fb343e022 124 {
j3 0:798fb343e022 125 rtn_val = -1;
j3 0:798fb343e022 126 }
j3 0:798fb343e022 127 else if(config.device_number == 0)
j3 0:798fb343e022 128 {
j3 0:798fb343e022 129 //device numbering starts with index 1
j3 0:798fb343e022 130 rtn_val = -2;
j3 0:798fb343e022 131 }
j3 0:798fb343e022 132 else
j3 0:798fb343e022 133 {
j3 0:798fb343e022 134 //write DECODE_MODE register of device
j3 0:798fb343e022 135 _p_cs->write(0);
j3 0:798fb343e022 136 for(idx = _num_devices; idx > 0; idx--)
j3 0:798fb343e022 137 {
j3 0:798fb343e022 138 if(config.device_number == idx)
j3 0:798fb343e022 139 {
j3 0:798fb343e022 140 _p_spi->write(MAX7219_DECODE_MODE);
j3 0:798fb343e022 141 _p_spi->write(config.decode_mode);
j3 0:798fb343e022 142 }
j3 0:798fb343e022 143 else
j3 0:798fb343e022 144 {
j3 0:798fb343e022 145 _p_spi->write(MAX7219_NO_OP);
j3 0:798fb343e022 146 _p_spi->write(0);
j3 0:798fb343e022 147 }
j3 0:798fb343e022 148 }
j3 0:798fb343e022 149 _p_cs->write(1);
j3 0:798fb343e022 150
j3 0:798fb343e022 151 wait_us(1);
j3 0:798fb343e022 152
j3 0:798fb343e022 153 //write INTENSITY register of device
j3 0:798fb343e022 154 _p_cs->write(0);
j3 0:798fb343e022 155 for(idx = _num_devices; idx > 0; idx--)
j3 0:798fb343e022 156 {
j3 0:798fb343e022 157 if(config.device_number == idx)
j3 0:798fb343e022 158 {
j3 0:798fb343e022 159 _p_spi->write(MAX7219_INTENSITY);
j3 0:798fb343e022 160 _p_spi->write(config.intensity);
j3 0:798fb343e022 161 }
j3 0:798fb343e022 162 else
j3 0:798fb343e022 163 {
j3 0:798fb343e022 164 _p_spi->write(MAX7219_NO_OP);
j3 0:798fb343e022 165 _p_spi->write(0);
j3 0:798fb343e022 166 }
j3 0:798fb343e022 167 }
j3 0:798fb343e022 168 _p_cs->write(1);
j3 0:798fb343e022 169
j3 0:798fb343e022 170 wait_us(1);
j3 0:798fb343e022 171
j3 0:798fb343e022 172 //write SCAN_LIMT register of device
j3 0:798fb343e022 173 _p_cs->write(0);
j3 0:798fb343e022 174 for(idx = _num_devices; idx > 0; idx--)
j3 0:798fb343e022 175 {
j3 0:798fb343e022 176 if(config.device_number == idx)
j3 0:798fb343e022 177 {
j3 0:798fb343e022 178 _p_spi->write(MAX7219_SCAN_LIMIT);
j3 0:798fb343e022 179 _p_spi->write(config.scan_limit);
j3 0:798fb343e022 180 }
j3 0:798fb343e022 181 else
j3 0:798fb343e022 182 {
j3 0:798fb343e022 183 _p_spi->write(MAX7219_NO_OP);
j3 0:798fb343e022 184 _p_spi->write(0);
j3 0:798fb343e022 185 }
j3 0:798fb343e022 186 }
j3 0:798fb343e022 187 _p_cs->write(1);
j3 0:798fb343e022 188
j3 0:798fb343e022 189 wait_us(1);
j3 0:798fb343e022 190
j3 0:798fb343e022 191 rtn_val = 0;
j3 0:798fb343e022 192 }
j3 0:798fb343e022 193
j3 0:798fb343e022 194 return(rtn_val);
j3 0:798fb343e022 195 }
j3 0:798fb343e022 196
j3 0:798fb343e022 197
j3 0:798fb343e022 198 //*********************************************************************
j3 0:798fb343e022 199 void Max7219::init_display(max7219_configuration_t config)
j3 0:798fb343e022 200 {
j3 0:798fb343e022 201 uint8_t idx = 0;
j3 0:798fb343e022 202
j3 0:798fb343e022 203 //write DECODE_MODE register of all devices
j3 0:798fb343e022 204 _p_cs->write(0);
j3 0:798fb343e022 205 for(idx = 0; idx < _num_devices; idx++)
j3 0:798fb343e022 206 {
j3 0:798fb343e022 207 _p_spi->write(MAX7219_DECODE_MODE);
j3 0:798fb343e022 208 _p_spi->write(config.decode_mode);
j3 0:798fb343e022 209 }
j3 0:798fb343e022 210 _p_cs->write(1);
j3 0:798fb343e022 211
j3 0:798fb343e022 212 wait_us(1);
j3 0:798fb343e022 213
j3 0:798fb343e022 214 //write INTENSITY register of all devices
j3 0:798fb343e022 215 _p_cs->write(0);
j3 0:798fb343e022 216 for(idx = 0; idx < _num_devices; idx++)
j3 0:798fb343e022 217 {
j3 0:798fb343e022 218 _p_spi->write(MAX7219_INTENSITY);
j3 0:798fb343e022 219 _p_spi->write(config.intensity);
j3 0:798fb343e022 220 }
j3 0:798fb343e022 221 _p_cs->write(1);
j3 0:798fb343e022 222
j3 0:798fb343e022 223 wait_us(1);
j3 0:798fb343e022 224
j3 0:798fb343e022 225 //write SCAN_LIMT register of all devices
j3 0:798fb343e022 226 _p_cs->write(0);
j3 0:798fb343e022 227 for(idx = 0; idx < _num_devices; idx++)
j3 0:798fb343e022 228 {
j3 0:798fb343e022 229 _p_spi->write(MAX7219_SCAN_LIMIT);
j3 0:798fb343e022 230 _p_spi->write(config.scan_limit);
j3 0:798fb343e022 231 }
j3 0:798fb343e022 232 _p_cs->write(1);
j3 0:798fb343e022 233
j3 0:798fb343e022 234 wait_us(1);
j3 0:798fb343e022 235 }
j3 0:798fb343e022 236
viewdeep51 5:0912d18d072f 237 //*************************************************************
viewdeep51 5:0912d18d072f 238 void Max7219::set_intensity(max7219_configuration_t config)
viewdeep51 5:0912d18d072f 239 {
viewdeep51 5:0912d18d072f 240 uint8_t idx = 0;
viewdeep51 5:0912d18d072f 241 wait_us(1);
viewdeep51 5:0912d18d072f 242
viewdeep51 5:0912d18d072f 243 //write INTENSITY register of device
viewdeep51 5:0912d18d072f 244 _p_cs->write(0);
viewdeep51 5:0912d18d072f 245 for(idx = _num_devices; idx > 0; idx--)
viewdeep51 5:0912d18d072f 246 {
viewdeep51 5:0912d18d072f 247 if(config.device_number == idx)
viewdeep51 5:0912d18d072f 248 {
viewdeep51 5:0912d18d072f 249 _p_spi->write(MAX7219_INTENSITY);
viewdeep51 5:0912d18d072f 250 _p_spi->write(config.intensity);
viewdeep51 5:0912d18d072f 251 }
viewdeep51 5:0912d18d072f 252 else
viewdeep51 5:0912d18d072f 253 {
viewdeep51 5:0912d18d072f 254 _p_spi->write(MAX7219_NO_OP);
viewdeep51 5:0912d18d072f 255 _p_spi->write(0);
viewdeep51 5:0912d18d072f 256 }
viewdeep51 5:0912d18d072f 257 }
viewdeep51 5:0912d18d072f 258 _p_cs->write(1);
viewdeep51 5:0912d18d072f 259
viewdeep51 5:0912d18d072f 260 wait_us(1);
viewdeep51 5:0912d18d072f 261 }
j3 0:798fb343e022 262
j3 0:798fb343e022 263 //*********************************************************************
j3 0:798fb343e022 264 int32_t Max7219::enable_device(uint8_t device_number)
j3 0:798fb343e022 265 {
j3 0:798fb343e022 266 int32_t rtn_val = -1;
j3 0:798fb343e022 267 uint8_t idx = 0;
j3 0:798fb343e022 268
j3 0:798fb343e022 269 if(device_number > _num_devices)
j3 0:798fb343e022 270 {
j3 0:798fb343e022 271 rtn_val = -1;
j3 0:798fb343e022 272 }
j3 0:798fb343e022 273 else if(device_number == 0)
j3 0:798fb343e022 274 {
j3 0:798fb343e022 275 //device numbering starts with index 1
j3 0:798fb343e022 276 rtn_val = -2;
j3 0:798fb343e022 277 }
j3 0:798fb343e022 278 else
j3 0:798fb343e022 279 {
j3 0:798fb343e022 280 _p_cs->write(0);
j3 0:798fb343e022 281 for(idx = _num_devices; idx > 0; idx--)
j3 0:798fb343e022 282 {
j3 0:798fb343e022 283 if(device_number == idx)
j3 0:798fb343e022 284 {
j3 0:798fb343e022 285 _p_spi->write(MAX7219_SHUTDOWN);
j3 0:798fb343e022 286 _p_spi->write(1);
j3 0:798fb343e022 287 }
j3 0:798fb343e022 288 else
j3 0:798fb343e022 289 {
j3 0:798fb343e022 290 _p_spi->write(MAX7219_NO_OP);
j3 0:798fb343e022 291 _p_spi->write(0);
j3 0:798fb343e022 292 }
j3 0:798fb343e022 293 }
j3 0:798fb343e022 294 _p_cs->write(1);
j3 0:798fb343e022 295
j3 0:798fb343e022 296 rtn_val = 0;
j3 0:798fb343e022 297 }
j3 0:798fb343e022 298
j3 0:798fb343e022 299 return(rtn_val);
j3 0:798fb343e022 300 }
j3 0:798fb343e022 301
j3 0:798fb343e022 302
j3 0:798fb343e022 303 //*********************************************************************
viewdeep51 6:7e3d1bcc15df 304
j3 0:798fb343e022 305
j3 0:798fb343e022 306
j3 0:798fb343e022 307 //*********************************************************************
j3 0:798fb343e022 308 int32_t Max7219::disable_device(uint8_t device_number)
j3 0:798fb343e022 309 {
j3 0:798fb343e022 310 int32_t rtn_val = -1;
j3 0:798fb343e022 311 uint8_t idx = 0;
j3 0:798fb343e022 312
j3 0:798fb343e022 313 if(device_number > _num_devices)
j3 0:798fb343e022 314 {
j3 0:798fb343e022 315 rtn_val = -1;
j3 0:798fb343e022 316 }
j3 0:798fb343e022 317 else if(device_number == 0)
j3 0:798fb343e022 318 {
j3 0:798fb343e022 319 //device numbering starts with index 1
j3 0:798fb343e022 320 rtn_val = -2;
j3 0:798fb343e022 321 }
j3 0:798fb343e022 322 else
j3 0:798fb343e022 323 {
j3 0:798fb343e022 324 _p_cs->write(0);
j3 0:798fb343e022 325 for(idx = _num_devices; idx > 0; idx--)
j3 0:798fb343e022 326 {
j3 0:798fb343e022 327 if(device_number == idx)
j3 0:798fb343e022 328 {
j3 0:798fb343e022 329 _p_spi->write(MAX7219_SHUTDOWN);
j3 0:798fb343e022 330 _p_spi->write(0);
j3 0:798fb343e022 331 }
j3 0:798fb343e022 332 else
j3 0:798fb343e022 333 {
j3 0:798fb343e022 334 _p_spi->write(MAX7219_NO_OP);
j3 0:798fb343e022 335 _p_spi->write(0);
j3 0:798fb343e022 336 }
j3 0:798fb343e022 337 }
j3 0:798fb343e022 338 _p_cs->write(1);
j3 0:798fb343e022 339
j3 0:798fb343e022 340 rtn_val = 0;
j3 0:798fb343e022 341 }
j3 0:798fb343e022 342
j3 0:798fb343e022 343 return(rtn_val);
j3 0:798fb343e022 344 }
j3 0:798fb343e022 345
j3 0:798fb343e022 346
j3 0:798fb343e022 347 //*********************************************************************
j3 0:798fb343e022 348 int32_t Max7219::write_digit(uint8_t device_number, uint8_t digit, uint8_t data)
j3 0:798fb343e022 349 {
j3 0:798fb343e022 350 int32_t rtn_val = -1;
j3 0:798fb343e022 351 uint8_t idx = 0;
j3 0:798fb343e022 352
j3 0:798fb343e022 353 if(digit > MAX7219_DIGIT_7)
j3 0:798fb343e022 354 {
j3 0:798fb343e022 355 rtn_val = -3;
j3 0:798fb343e022 356 }
j3 0:798fb343e022 357 else if(digit < MAX7219_DIGIT_0)
j3 0:798fb343e022 358 {
j3 0:798fb343e022 359 rtn_val = -4;
j3 0:798fb343e022 360 }
j3 0:798fb343e022 361 else
j3 0:798fb343e022 362 {
j3 0:798fb343e022 363 if(device_number > _num_devices)
j3 0:798fb343e022 364 {
j3 0:798fb343e022 365 rtn_val = -1;
j3 0:798fb343e022 366 }
j3 0:798fb343e022 367 else if(device_number == 0)
j3 0:798fb343e022 368 {
j3 0:798fb343e022 369 rtn_val = -2;
j3 0:798fb343e022 370 }
j3 0:798fb343e022 371 else
j3 0:798fb343e022 372 {
j3 0:798fb343e022 373 _p_cs->write(0);
j3 0:798fb343e022 374 for(idx = _num_devices; idx > 0; idx--)
j3 0:798fb343e022 375 {
j3 0:798fb343e022 376 if(idx == device_number)
j3 0:798fb343e022 377 {
j3 0:798fb343e022 378 _p_spi->write(digit);
j3 0:798fb343e022 379 _p_spi->write(data);
j3 0:798fb343e022 380 }
j3 0:798fb343e022 381 else
j3 0:798fb343e022 382 {
j3 0:798fb343e022 383 _p_spi->write(MAX7219_NO_OP);
j3 0:798fb343e022 384 _p_spi->write(0);
j3 0:798fb343e022 385 }
j3 0:798fb343e022 386 }
j3 0:798fb343e022 387 _p_cs->write(1);
j3 0:798fb343e022 388
j3 0:798fb343e022 389 rtn_val = 0;
j3 0:798fb343e022 390 }
j3 0:798fb343e022 391 }
j3 0:798fb343e022 392
j3 0:798fb343e022 393 return(rtn_val);
j3 0:798fb343e022 394 }
j3 0:798fb343e022 395
j3 0:798fb343e022 396
j3 0:798fb343e022 397 //*********************************************************************
j3 0:798fb343e022 398 int32_t Max7219::clear_digit(uint8_t device_number, uint8_t digit)
j3 0:798fb343e022 399 {
j3 0:798fb343e022 400 int32_t rtn_val = -1;
j3 0:798fb343e022 401 uint8_t idx = 0;
j3 0:798fb343e022 402
j3 0:798fb343e022 403 if(digit > MAX7219_DIGIT_7)
j3 0:798fb343e022 404 {
j3 0:798fb343e022 405 rtn_val = -3;
j3 0:798fb343e022 406 }
j3 0:798fb343e022 407 else if(digit < MAX7219_DIGIT_0)
j3 0:798fb343e022 408 {
j3 0:798fb343e022 409 rtn_val = -4;
j3 0:798fb343e022 410 }
j3 0:798fb343e022 411 else
j3 0:798fb343e022 412 {
j3 0:798fb343e022 413 if(device_number > _num_devices)
j3 0:798fb343e022 414 {
j3 0:798fb343e022 415 rtn_val = -1;
j3 0:798fb343e022 416 }
j3 0:798fb343e022 417 else if(device_number == 0)
j3 0:798fb343e022 418 {
j3 0:798fb343e022 419 rtn_val = -2;
j3 0:798fb343e022 420 }
j3 0:798fb343e022 421 else
j3 0:798fb343e022 422 {
j3 0:798fb343e022 423 _p_cs->write(0);
j3 0:798fb343e022 424 for(idx = _num_devices; idx > 0; idx--)
j3 0:798fb343e022 425 {
j3 0:798fb343e022 426 if(idx == device_number)
j3 0:798fb343e022 427 {
j3 0:798fb343e022 428 _p_spi->write(digit);
j3 0:798fb343e022 429 _p_spi->write(0);
j3 0:798fb343e022 430 }
j3 0:798fb343e022 431 else
j3 0:798fb343e022 432 {
j3 0:798fb343e022 433 _p_spi->write(MAX7219_NO_OP);
j3 0:798fb343e022 434 _p_spi->write(0);
j3 0:798fb343e022 435 }
j3 0:798fb343e022 436 }
j3 0:798fb343e022 437 _p_cs->write(1);
j3 0:798fb343e022 438
j3 0:798fb343e022 439 rtn_val = 0;
j3 0:798fb343e022 440 }
j3 0:798fb343e022 441 }
j3 0:798fb343e022 442
j3 0:798fb343e022 443 return(rtn_val);
j3 0:798fb343e022 444 }
j3 0:798fb343e022 445