Show
Ignore:
Timestamp:
09/17/09 17:59:38 (3 years ago)
Author:
khali
Message:

Add support for short writes with PEC.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • i2c-tools/trunk/tools/i2cset.c

    r5394 r5771  
    33    Copyright (C) 2001-2003  Frodo Looijaard <frodol@dds.nl>, and 
    44                             Mark D. Studebaker <mdsxyz123@yahoo.com> 
    5     Copyright (C) 2004-2008  Jean Delvare <khali@linux-fr.org> 
     5    Copyright (C) 2004-2009  Jean Delvare <khali@linux-fr.org> 
    66 
    77    This program is free software; you can redistribute it and/or modify 
     
    3636{ 
    3737        fprintf(stderr, 
    38                 "Usage: i2cset [-f] [-y] [-m MASK] I2CBUS CHIP-ADDRESS DATA-ADDRESS [VALUE [MODE]]\n" 
     38                "Usage: i2cset [-f] [-y] [-m MASK] I2CBUS CHIP-ADDRESS DATA-ADDRESS [VALUE] [MODE]\n" 
    3939                "  I2CBUS is an integer or an I2C bus name\n" 
    4040                "  ADDRESS is an integer (0x03 - 0x77)\n" 
    4141                "  MODE is one of:\n" 
    42                 "    b (byte, default)\n" 
    43                 "    w (word)\n" 
     42                "    c (byte, no value)\n" 
     43                "    b (byte data, default)\n" 
     44                "    w (word data)\n" 
    4445                "    Append p for SMBus PEC\n"); 
    4546        exit(1); 
     
    181182 
    182183        if (argc > flags + 4) { 
    183                 size = I2C_SMBUS_BYTE_DATA; 
    184                 value = strtol(argv[flags+4], &end, 0); 
    185                 if (*end || value < 0) { 
    186                         fprintf(stderr, "Error: Data value invalid!\n"); 
    187                         help(); 
     184                if (!strcmp(argv[flags+4], "c") 
     185                 || !strcmp(argv[flags+4], "cp")) { 
     186                        size = I2C_SMBUS_BYTE; 
     187                        value = -1; 
     188                        pec = argv[flags+4][1] == 'p'; 
     189                } else { 
     190                        size = I2C_SMBUS_BYTE_DATA; 
     191                        value = strtol(argv[flags+4], &end, 0); 
     192                        if (*end || value < 0) { 
     193                                fprintf(stderr, "Error: Data value invalid!\n"); 
     194                                help(); 
     195                        } 
    188196                } 
    189197        } else {