Metadata-Version: 2.1
Name: ECTweaker
Version: 1.8
Summary: ECTweaker Library for python allows users to read/write and control the EC of laptops, specially MSI!
Author: Aditya Kumar Bajpai (YoCodingMonster)
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Operating System :: POSIX :: Linux
Description-Content-Type: text/markdown
License-File: LICENSE

# ECTweaker
ECTweaker Library for python allows users to read/write and control the EC of laptops, specially MSI!

# INSTALLATION
- pip install ectweaker
  - If the above method doesn't work please install in a virtual environment and call it in scripts from the virtual environments only!

# Preparing the EC to be read/write friendly
- Disable secure boot
- To check one of the example to use this code properly, visit https://github.com/YoCodingMonster/OpenFreezeCenter-Lite/tree/main and check ```OpenFreezeCenter-Lite.py``` file

# Updating 
- pip install ECTweaker --upgrade

# Functions
## ```check()```
- This prepare the OS for EC read/write functionality and reboots the system for the first time only.
    - ```Return Type``` - int
    - ```Returns```
        - ```1``` if EC read/write is enabled.
        - ```0``` if EC read/write is not enabled.
    ```
    import os
    CHECK = ECT.check()
    if CHECK == 1:
        # your_script_here
    else:
        os.system("shutdown -r +1")
        print("Rebooting system within 1 min!\nPlease save all work before it happens!")
    ```
## ```write(BYTE ADDRESS, VALUE)```
- This will allow you to write any INTEGER value to BYTE ADDRESS.
    - ```Parameters```
        - ```BYTE ADDRESS``` - Hex address of the memory where VALUE needs to be written.
        - ```VALUE``` - content which needs to be written at BYTE ADDRESS.
    ```
    import ECTweaker as ECT
    ECT.write(0xd4, 121)
    ```

## ```read(BYTE ADDRESS, SIZE)```
- This will allow you to read INTEGER value from BYTE ADDRESS.
    - ```Return Type``` - int
    - ```Returns``` - VALUE stored at BYTE ADDRESS fo memory provided.
    - ```Parameters```
        - ```BYTE ADDRESS``` - Hex address of the first memory from where VALUE is retrived.
        - ```SIZE``` - How many adjacent BYTE ADDRESS stores the complete VALUE.
    ```
    import ECTweaker as ECT
    VALUE = ECT.read(0xd4, 1)
    ```

## ```fan_profile(PROFILE, VALUES, CPU)```
- This allows for MSI laptops with intel CPU to set Fan profiles.
    - ```Parameters```
        - ```PROFILE``` - Fan profile which needs to be, considered values are as follows.
            - ```auto```, ```basic```, ```advanced```, ```cooler booster```
        - ```VALUES``` - This is a list of address and values which needs to be set n order to change the fan profile and other things.
            ```
            CPU_FAN_PROFILE_BYTE             VALUES[0][0]   BYTE ADDRESS              FAN PROFILES BYTE AND VALUES
            CPU_FAN_PROFILE_VALUE_AUTO       VALUES[0][1]   VALUE
            CPU_FAN_PROFILE_VALUE_BASIC      VALUES[0][2]   VALUE
            CPU_FAN_PROFILE_VALUE_ADVANCED   VALUES[0][3]   VALUE

            CPU_COOLER_BOOSTER_BYTE          VALUES[1][0]   BYTE ADDRESS              COOLER BOOSTER BYTE AND VALUES
            CPU_COOLER_BOOSTER_VALUE         VALUES[1][1]   VALUE [off]
            CPU_COOLER_BOOSTER_VALUE         VALUES[1][2]   VALUE [on]

            CPU_FAN_SPEED_1_BYTE             VALUES[2][0]   BYTE ADDRESS              CPU FAN SPEEDS ADDRESS
            CPU_FAN_SPEED_2_BYTE             VALUES[2][1]   BYTE ADDRESS
            CPU_FAN_SPEED_3_BYTE             VALUES[2][2]   BYTE ADDRESS
            CPU_FAN_SPEED_4_BYTE             VALUES[2][3]   BYTE ADDRESS
            CPU_FAN_SPEED_5_BYTE             VALUES[2][4]   BYTE ADDRESS
            CPU_FAN_SPEED_6_BYTE             VALUES[2][5]   BYTE ADDRESS
            CPU_FAN_SPEED_7_BYTE             VALUES[2][6]   BYTE ADDRESS

            GPU_FAN_SPEED_1_BYTE             VALUES[3][0]   BYTE ADDRESS              GPU FAN SPEEDS ADDRESS
            GPU_FAN_SPEED_2_BYTE             VALUES[3][1]   BYTE ADDRESS
            GPU_FAN_SPEED_3_BYTE             VALUES[3][2]   BYTE ADDRESS
            GPU_FAN_SPEED_4_BYTE             VALUES[3][3]   BYTE ADDRESS
            GPU_FAN_SPEED_5_BYTE             VALUES[3][4]   BYTE ADDRESS
            GPU_FAN_SPEED_6_BYTE             VALUES[3][5]   BYTE ADDRESS
            GPU_FAN_SPEED_7_BYTE             VALUES[3][6]   BYTE ADDRESS

            AUTO_FAN_SPEEDS_VENDOR_VALUES    VALUES[4][]    VALUES                    AUTO FAN SPEEDS```
        - ```CPU```
            - ```1``` If intel cpu if 10th gen or above.
            - ```0``` If intel cpu if 9th gen or below.
    ```
    import ECTweaker as ECT
    ECT.fan_profile("auto", VALUES, CPU)
    ```

## ```speed_writer(VALUES)```
- Internal function used by ```fan_profile``` function to set the fan speed curve.
